Аутентификация Oracle не работает?
Я реализовал кнопку LogOut, которая отключает пользователя от веб-страницы. Сервер - это Oracle HTTP сервер.
При нажатии на LogOut выполняется следующая процедура
PROCEDURE log_me_off IS
BEGIN
-- Open the HTTP header
owa_util.mime_header('text/html', FALSE, NULL);
-- Send a cookie to logout
owa_cookie.send('WDB_GATEWAY_LOGOUT', 'YES', path=>'/');
-- Close the HTTP header
owa_util.http_header_close;
-- Generate the page
htp.p('
<head>
<script type = "text/javascript" >
history.pushState(null, null, ''xna_hpms_ui.log_me_off'');
window.addEventListener(''popstate'', function(event) {
history.pushState(null, null, ''xna_hpms_ui.log_me_off'');
});
</script>
</head>
You have been logged off from the WEBSITE');
htp.anchor( 'http://www.google.com', 'click here to login a');
htp.p('<BR>bye');
END;
END;
/
Документ, на который я ссылался: https://docs.oracle.com/cd/B13789_01/server.101/b12303/secure.htm
Проблема:
В Chrome, когда я нажимаю кнопку "Выйти из системы", она выходит из системы пользователя, а после этого, когда пользователь пытается обновить или пытается открыть веб-страницу на новой вкладке, появляется приглашение с запросом учетных данных для входа, если пользователь нажимает кнопку "Отмена" и "Обновить" на вкладке. он автоматически входит в систему. Пока такого поведения нет в IE.
Когда открыто много вкладок, и пользователь нажимает кнопку "Выйти из системы", он выходит из системы с текущей страницы, когда при переходе на другую вкладку, если он щелкает в любом месте, он снова просит веб-страницу ввести учетные данные, а если он нажимает кнопку "Отмена" и обновляет страницу, он снова вошел в систему. без ввода учетных данных.
Пожалуйста, помогите
1 ответ
Я рекомендую использовать Custom OWA и ваш собственный cookie в качестве средства аутентификации пользователей. Настройте DAD для авторизации схемы с помощью custom_owa. Затем создайте пакет / функцию custom_owa.authorize в своей схеме.
Функция custom_owa.authorize будет вызываться перед доступом к каждой странице. Если он возвращает true, запрос удовлетворяется. Если false, запрос отклонен.
Это дает вам полный контроль над тем, кто и к чему имеет доступ. Итак, что вы делаете, это устанавливаете свой собственный cookie, когда кто-то заходит на ваш сайт. Затем в custom_owa.authorize проверьте cookie и верните соответственно true или false.
Когда кто-то выходит из системы, уничтожьте куки или истекает срок его действия.