Spring记住匿名用户

Posted

技术标签:

【中文标题】Spring记住匿名用户【英文标题】:Spring remember anonymous user 【发布时间】:2014-05-16 19:18:57 【问题描述】:

我们正在使用带有 Spring Security 的 Spring MVC。

这些是我们登录系统的要求:

该网站应该可供匿名用户使用,包括偏好设置(例如打开或关闭页面上的过滤器)。 如果匿名用户在第二天返回(在新会话中),则应记住这些首选项。 匿名用户可以随时选择注册个人资料(用户/密码组合),之前匿名用户设置的所有首选项都应存储在新个人资料中。 或者,匿名用户可以选择使用已注册的个人资料登录,他们应该可以选择将他们匿名设置的首选项存储到他们的个人资料中。 注册用户可以登录该页面,并且应该记住他们的登录信息。

我可以通过使用 Spring Security Remember Me 来跨会话保持登录用户,并且我可以通过手动设置 cookie 来跨会话保持匿名用户。

对于这种情况,什么是更优雅的解决方案(最好使用 Spring Security)?是否可以为匿名用户使用 Spring Security 记住我功能?

【问题讨论】:

【参考方案1】:

考虑对匿名用户使用 remember-me 身份验证确实没有意义。记住我要求用户实际存在,并且根据定义,它将他们作为个人进行身份验证。听起来您只想创建一个包含用户设置的 cookie,这与安全性无关。你应该在你的应用程序中自己做。这对我来说似乎是最明显的解决方案。

一旦用户注册,您就可以在他们的帐户中使用 remember-me,但如何编写创建新用户配置文件的逻辑取决于您自己,并且使用当前 cookie 中的设置将是该过程的一部分.

【讨论】:

以上是关于Spring记住匿名用户的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security 认证成功后返回匿名用户

Spring @RestController 用于匿名和授权用户的单一方法

匿名用户的 Spring Security 和 RequestCache

Spring security:用户是登录的还是匿名的?

Spring Boot OAuth 2:登录后匿名用户

Spring Security - 访问被拒绝(用户不是匿名的)spring-security-core-4.0.3.RELEASE