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

sma*_*ath 20 java security servlets logout java-ee

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

我见过的大多数(全部?)书籍和教程都展示了如何将login/loginerror页面添加到他们的应用程序中,并使用"j_security_check"方法演示安全主体/角色/领域等的使用 - 一切都很好.但是,目前尚不清楚如何赋予用户注销权.实际上,如何在会话超时等之后强制退出?

Ram*_*PVK 27

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

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

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

问题:确实,如何在会话超时等之后强制退出?

答:<session-timeout>web.xml中,您可以定义之后,会议将通过服务器获取无效的超时值.

  • 为了清楚Servlet 3.0,您必须同时执行logout()和session.invalidate()? (3认同)

ftr*_*ftr 5

您可以使用logout()-Method 来以编程方式执行此操作HttpServletRequest.还有一个用户名和密码登录的相应方法.Servlet 3.0中添加了这些方法,因此它们可以在Java EE 6中使用.

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

<session-config>
  <session-timeout>30</session-timeout> 
</session-config>
Run Code Online (Sandbox Code Playgroud)

时间单位是分钟.