powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Двойная аутентификация
6 сообщений из 6, страница 1 из 1
Двойная аутентификация
    #39847541
ValKat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые гуру APEX.
Использую двойную аутентификацию при входе в приложение: логин, пароль + уровень административных прав (в выпадающем списке).
Специфика в том, что по схеме один логин может обладать разными административными правами, например user1 TASK_ADMIN и user1 DB_ADMIN
Аутентификация проходит без проблем и пользователя забрасывает на Главную страницу приложения.
Проблема: пользователь на этой странице существует не как указали на странице входа (с заданным уровнем административных прав), а случайным образом.
Как избавиться от многозначности?
...
Рейтинг: 0 / 0
Двойная аутентификация
    #39847630
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужны подробности.
Когда произносятся слова "случайным образом", скорее всего не учли асинхронность.
...
Рейтинг: 0 / 0
Двойная аутентификация
    #39847657
ValKat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица Пользователи (ID пользователя, Логин, Пароль). Есть таблица Уровень администрирования (ID уровня, Наименование). Таблицы связаны между собой как многие-ко-многим через таблицу Пользователи - Уровень администрирования (ID пользователя, ID уровня).
В Shared Componens > Authentication Scheme > Application Express Authentication тип схемы стоит как Custum.
Там же прописана стандартная функция аутентификации:
FUNCTION cheсk_authen (p_username IN VARCHAR2, p_password IN NVARCHAR2)
RETURN BOOLEAN
AS
x NUMBER := 0;
BEGIN
SELECT 1 INTO x
FROM Пользователи П JOIN Пользователи_Уровень_Администрирования ПУА
ON П.ID_Пользователя = ПУА.ID_Пользователя
JOIN Уровень_администрирования УА
ON УА.ID_Уровня = ПУА.ID_Уровня
WHERE UPPER(П.Логин) = UPPER(p_username)
AND П.Пароль = p_password
AND УА.ID_Уровня = :P9999_STATUS;
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
END cheсk_authen;


На странице 9999 - Login Page создан дополнительный элемент в виде выпадающего списка под Уровень администрирования (по ID уровня)

Соответственно один и тот же пользователь может логинится в приложении с разным уровнем администрирования.
После того, как пользователь залогинился, например, как TASK_ADM, система не понимает, что он TASK_ADM, потому что для него еще назначен и уровень DB_ADMIN, например. Как приложению объяснить, что он зашел как User_1 конкретно с уровнем TASK_ADM.

Насколько я понимаю, вопрос может крутиться вокруг переменной :P9999_STATUS (Тот самый элемент, который создан для дополнительной аутентификации по уровню администрирования).
...
Рейтинг: 0 / 0
Двойная аутентификация
    #39847706
ValKat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное понимания мое объяснение не добавило.

Можно поставить вопрос шире.

Как правильно настроить аутентификацию пользователя по двум параметрам: логин, пароль + уровень администрирования.
Под правильно подразумевается, что один пользователь может иметь несколько уровней администрирования. Необходимо, чтобы приложение его однозначно идентифицировало в связке логин - уровень администрирования (по введенным параметрам на странице Логина)
...
Рейтинг: 0 / 0
Двойная аутентификация
    #39849048
ValKat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ларчик просто открывался. Задача решается через создание элемента приложения и передачу ему значения STATUS прямо в функции аутентификации )
...
Рейтинг: 0 / 0
Двойная аутентификация
    #39850112
ValKat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видео на YouTube:
YouTube Video
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Двойная аутентификация
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]