|
Двойная аутентификация
|
|||
---|---|---|---|
#18+
Добрый день, уважаемые гуру APEX. Использую двойную аутентификацию при входе в приложение: логин, пароль + уровень административных прав (в выпадающем списке). Специфика в том, что по схеме один логин может обладать разными административными правами, например user1 TASK_ADMIN и user1 DB_ADMIN Аутентификация проходит без проблем и пользователя забрасывает на Главную страницу приложения. Проблема: пользователь на этой странице существует не как указали на странице входа (с заданным уровнем административных прав), а случайным образом. Как избавиться от многозначности? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 15:35 |
|
Двойная аутентификация
|
|||
---|---|---|---|
#18+
Нужны подробности. Когда произносятся слова "случайным образом", скорее всего не учли асинхронность. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 17:58 |
|
Двойная аутентификация
|
|||
---|---|---|---|
#18+
Есть таблица Пользователи (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 (Тот самый элемент, который создан для дополнительной аутентификации по уровню администрирования). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 18:50 |
|
Двойная аутентификация
|
|||
---|---|---|---|
#18+
Наверное понимания мое объяснение не добавило. Можно поставить вопрос шире. Как правильно настроить аутентификацию пользователя по двум параметрам: логин, пароль + уровень администрирования. Под правильно подразумевается, что один пользователь может иметь несколько уровней администрирования. Необходимо, чтобы приложение его однозначно идентифицировало в связке логин - уровень администрирования (по введенным параметрам на странице Логина) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2019, 21:18 |
|
Двойная аутентификация
|
|||
---|---|---|---|
#18+
А ларчик просто открывался. Задача решается через создание элемента приложения и передачу ему значения STATUS прямо в функции аутентификации ) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2019, 03:45 |
|
|
start [/forum/topic.php?fid=50&fpage=7&tid=1874001]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 132ms |
0 / 0 |