Oracle 身份验证不起作用?

Oracle authentication not working?

我实现了一个注销按钮,用于从网页注销用户。服务器是 Oracle HTTP 服务器。

单击“注销”时,它会执行以下程序

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

问题:

  1. 在 Chrome 中,当我单击“注销”按钮时,它会注销用户,之后当用户尝试刷新或尝试在新选项卡中打开网页时,会出现提示询问对于登录凭据,如果用户单击取消并刷新选项卡,他将自动登录。虽然这种行为不在 IE 中。

  2. 当有许多选项卡打开并且用户单击“注销”按钮时,他将从当前页面注销,而当导航到其他选项卡时,如果他单击任何地方,他再次被网页要求输入凭据,而如果他单击“取消”并刷新页面,他在未输入凭据的情况下再次登录。

请帮忙

我建议使用自定义 OWA 和您自己的 cookie 作为对用户进行身份验证的方法。设置 DAD 以使用 custom_owa 授权模式。然后在您的架构中创建 custom_owa.authorize package/function。

custom_owa.authorize函数将在每个页面被访问之前被调用。如果 return 为真,则请求被批准。如果为 false,则请求被拒绝。

这让您可以完全控制谁可以访问什么。因此,您要做的就是在有人登录您的网站时设置您自己的 cookie。然后在 custom_owa.authorize 中检查 cookie 并 return 相应地判断真假。

当有人注销时,销毁 cookie 或使其过期。