gpt4 book ai didi

java - 基于 ADF 的应用程序与 Tomcat : cannot login in IE

转载 作者:行者123 更新时间:2023-11-28 23:47:46 25 4
gpt4 key购买 nike

我正在支持一些项目,使用 ADF(使用 JDeveloper 11.1.2.2.0) 构建并部署到 Tomcat 7.0.28。

JSessionID 有问题:
登录前和登录后 IT 应该有所不同。为了解决这个问题,在我的方法 validate()(当用户提交登录表单时执行)中,我执行以下操作:

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession)ec.getSession(false);
session.invalidate();
session = (HttpSession)ec.getSession(true);
//setting some special session attributes
ec.redirect("nextPage");

当我到达 nextPage 时,我可以获得具有上面设置的特殊属性的 session ,然后继续。当我从 Firefox 或 Chrome 登录时一切正常。

但是当我使用 IE 8.0 登录并被重定向到 nextPage 时,我的代码获取没有这些特殊属性的 session 并将我返回到登录页面。

使用 Wireshark 我已经意识到,当 Firefox 登录时,它会发送带有用户输入(用户名/密码)的 POST 请求,使用 SetCookie 参数中的新 JSessionID 接收答案,发送另一个带有 Adf-Window-id 并收到应答,然后重定向到 nextPage

但是对于 IE 流程是不同的:在登录时 IE 发送 连续两个 POST 请求 (第一个是用户输入,第二个是 Adf-Window-id)然后收到两个答案,每个答案都有不同的 JSessionID。它存储最后一个并被重定向到 nextPage。显然,最后一个 JSessionID 不属于我设置特殊属性的 session 。

我已经花了几天时间尝试通过挖掘配置和谷歌来解决这个问题,但没有成功。我所看到的 - IE 有时可以按预期登录(在这种情况下,上面提到的两个答案以相反的顺序收到),但它很少发生。

也许您遇到过同样的问题并解决了?或者也许我正在做/预期会出现问题?

最佳答案

实际上你所做的是行不通的。当您执行 Java EE 容器管理的身份验证时,您将对用户 session 进行身份验证。如果您使 session 无效,那么用户身份验证也会消失。唯一可行的方法是使用基本身份验证,在这种情况下,浏览器会在每个请求中发送使用凭据。

Oracle WLS 对此有一个专有方法,允许更新 session ID 而不会使其失效。 Tomcat 似乎也存在类似情况,请参见此处:http://www.koelnerwasser.de/?p=11

关于java - 基于 ADF 的应用程序与 Tomcat : cannot login in IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12171417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com