当前位置: 首页 > 面试题库 >

登录后自动重新登录到JSF应用程序

平元明
2023-03-14
问题内容

对于典型的最典型的面向Internet的网站,当您通过关闭选项卡( 无需注销 )登录并离开该网站(然后 注销
),然后再次访问时,可能不需要您重新指定凭据或登录,您可以直接登录。

这一切在后端如何发生?如何在我的JSF 2.1应用程序中启用这种机制?

在Tomcat7服务器上使用JSF 2.1


问题答案:

这基本上是通过一个长寿的cookie完成的。JSF API不提供此功能,因为它只是一个基于组件的简单MVC框架。标准Java EE
API也未提供此功能。诸如Spring Security和Apache Shiro之类的某些身份验证框架提供了此功能。

如果您需要使用“普通” Java EE / JSF来实现此目的,那么您需要在通过登录时自己创建一个长期存在的cookie
ExternalContext#addResponseCookie()。Cookie值必须是一个长的,唯一的,自动生成的且难以猜测的值(例如java.util.UUID),您还必须将其存储在与用户ID关联的DB中。然后,可以使用简单的servlet筛选器来检查HttpServletRequest#getCookies()已确认登录的用户不存在时的cookie
。如果找到该cookie并有效,则自动登录用户。

为了提高安全性,如有必要,请最终用户提供选项以“锁定”此cookie在用户IP上,该用户IP还将与cookie ID和用户ID一起存储在DB中。



 类似资料:
  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 当我使用Parse时,SDK似乎会将会话数据存储在本地,用户在刷新页面(或退出移动应用程序)后无需再次登录。Firebase/Angularfire的情况似乎并非如此;每次我刷新我的网页,身份验证数据都会得到很多。这似乎是非常基本和重要的功能,我会很惊讶Firebase的优秀人员还没有实现。我错过什么了吗? 完整性;这是我在应用程序中的代码。run():

  • 问题内容: 我正在使用logback / slf4j处理我的应用程序中的日志记录。在我开始使用EJB之前,一切都运行良好。将无状态EJB添加到应用程序后,记录器开始忽略我的logback.xml,并停止使用附加程序。我切换到编程式记录器配置以查看出了什么问题,现在当我尝试在EJB中使用记录器时遇到以下错误: 源于这一行: 是否需要任何特殊的配置才能使Logback与EJB一起使用?如果有问题,我将

  • 问题内容: 我想在我的 react / react-router / flux 应用程序中建立一个Facebook登录名。我在登录事件上注册了一个侦听器,并且希望将用户重定向到(如果他们已登录)。该怎么办?效果不佳,除非完全重新加载了页面。 问题答案: React Router v0.13 该实例从返回可以通过左右(或者,如果内部的阵营组件,你可以从它的上下文对象),以及包含的方法一样,你可以用它

  • 我使用的是Spring Security 4.1.1,但我遇到了一个问题:我试图访问URL,应用程序会重定向到登录页面。到现在为止,一直都还不错。 但是,成功登录后,应用程序会再次将我重定向到登录页面,并且不会创建任何会话,因此即使尝试直接访问URL(在URL栏中键入),应用程序也会重定向到登录页面。 有一些URL我必须要求登录才能访问它们。其他的,我可以访问无需身份验证。这些我不需要验证的URL

  • 我已经创建了react应用程序,并使用下面提供的okta示例使用okta登录。 https://developer.okta.com/code/react/okta_react/#add-an-openid-connect-client-in-okta 我可以通过输入凭据并点击登录按钮成功地从我的应用程序登录到应用程序。 但是,如果我登录到okta开发帐户,然后如果我导航到我的应用程序,我的应用程