登录后如何正确注销 Java EE 6 Web 应用程序

2022-09-02 09:39:54

一个非常简单的要求。登录到 Web J2EE 6 应用程序后,如何让用户再次注销?

我看过的大多数(所有?)书籍和教程都展示了如何将登录/登录错误页面添加到他们的应用程序中,并使用“j_security_check”方法演示安全主体/角色/领域等的使用 - 一切都很好。但是,目前还不清楚如何为用户提供注销权限。实际上,如何在会话超时等之后强制注销?


答案 1

您应该通过以下方式使会话无效:logout servlet/jsp

  • 在 Servlet 3.0 之前,使用它也会使会话失效。session.invalidate() method
  • Servlet 3.0 提供了一个 API 方法,该方法仅使安全上下文失效,并且会话仍然存在。HttpServletRequest.logout()

而且,应用程序 UI 应提供一个链接,该链接调用logout servlet/jsp

问题:实际上,如何在会话超时等之后强制注销?

答:in web.xml允许您定义超时值,在此值之后,服务器将使会话失效。<session-timeout>


答案 2

您可以使用 HttpServletRequestlogout()-方法以编程方式执行此操作。还有一种使用用户名和密码登录的相应方法。这些方法已添加到 Servlet 3.0 中,因此在 Java EE 6 中可用。

超时是一种不同的野兽,可以按如下方式指定:web.xml

<session-config>
  <session-timeout>30</session-timeout> 
</session-config>

时间单位是分钟。