我有一个使用表单身份验证的 JSF 登录页面。我通过调用 HttpServletRequest.login(username, password) 登录用户。注销是通过首先调用 ExternalContext.invalidateSession() 然后为当前用户调用 HttpServletRequest.logout() 来完成的。
我的计划是通过在用户登录时添加到列表中并在用户注销时从列表中删除来跟踪应用程序范围列表中的登录用户。
我对这种方法有两个担忧:
如果已经登录的用户在没有先注销的情况下尝试再次登录,我想使现有会话无效并进行一些清理。如何访问给定登录用户的会话?我还可以使用此功能强制注销某些用户。
如果会话过期(例如超时),我想从登录用户列表中删除用户。如何监听会话到期?