gpt4 book ai didi

java - 停止 Tomcat 以保存用户凭据

转载 作者:行者123 更新时间:2023-11-28 22:29:38 25 4
gpt4 key购买 nike

我正在使用 Apache Tomcat 和 Java EE 开发一个简单的 Web 应用程序。

我使用我自己的 JDBC Domain 领域来保护和验证用户,并且我正在使用带有 j_security_check 的基本身份验证方法。

我已经实现了注销 Servlet,一切正常。但是当我注销并尝试再次登录时,应用程序或浏览器正在使用以前的凭据,它甚至没有要求我输入另一个凭据。它只是使用最新使用的凭据自动登录。只有当我重置服务器并关闭浏览器 (Chrome) 时,tomcat 才会再次询问凭据。

我的目标是阻止这种自动登录过程。 ¿我做错了什么吗?

更新:我的注销 Servlet 正在执行以下操作:

response.setHeader("Cache-Control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");

request.getSession().removeAttribute("logonSessData");
request.getSession().invalidate();
response.sendRedirect(request.getContextPath() + "/index.jsp");

我的登录 web.xml 看起来像这样:

<security-constraint>
<display-name>userConstraint</display-name>
<web-resource-collection>
<web-resource-name>User pages</web-resource-name>
<description/>
<url-pattern>/users/*</url-pattern>
<url-pattern>/retos/misiones/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>user</role-name>
</auth-constraint>
<user-data-constraint>
<description/>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>SPERO</realm-name>
</login-config>
<security-role>
<description>Usuario registrado de SPERO</description>
<role-name>user</role-name>
</security-role>
<resource-ref>
<description>Spero DataBase Connection Pool</description>
<res-ref-name>jdbc/spero</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

最佳答案

如果您的应用程序是 Servlet 3.0 版本,您应该在注销 servlet 中使用 request.logout()。它应该正确地使 session 无效并删除用户凭据,请参阅 javadoc request.logout .如果 Tomcat 没有正确实现它,您应该调用 session.invalidate()

关于java - 停止 Tomcat 以保存用户凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773777/

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