Java Spring中的无认证用户鉴别
我目前正在为使用SpringBoot的网站编写一个基于简单RESTAPI的评论系统 为了让人们删除或更新他们之前发布的评论,我想在Cookie中存储一个唯一的标记来记住/识别他们。用户无需注册即可发表评论。当用户删除cookie或cookie过期时,将无法恢复删除/修改注释的权限Java Spring中的无认证用户鉴别,java,spring,spring-mvc,spring-security,spring-boot,Java,Spring,Spring Mvc,Spring Security,Spring Boot,我目前正在为使用SpringBoot的网站编写一个基于简单RESTAPI的评论系统 为了让人们删除或更新他们之前发布的评论,我想在Cookie中存储一个唯一的标记来记住/识别他们。用户无需注册即可发表评论。当用户删除cookie或cookie过期时,将无法恢复删除/修改注释的权限 当然,我自己也可以使用过滤器实现这样的功能,但我想知道在Spring中是否有实现这一功能的标准方法(可能使用Spring安全性)?我认为这是一个常见的场景,但我能找到的所有示例都包括用户名/密码之类的身份验证信息。这可
当然,我自己也可以使用过滤器实现这样的功能,但我想知道在Spring中是否有实现这一功能的标准方法(可能使用Spring安全性)?我认为这是一个常见的场景,但我能找到的所有示例都包括用户名/密码之类的身份验证信息。这可以通过创建
SecurityContextRepository
的自定义实现来实现
SecurityContextRepository
的实现AuthenticationProvider
的实现,以检查cookie是否包含有效值。可以向cookie值添加前缀和/或后缀,并且可以对该值进行加密以确保真实性并防止模拟我有一个示例来演示要实现的组件。该示例将身份验证信息存储在内存缓存中,但可以根据需要存储在
HttpSession
或任何其他数据存储中。代码是Scala格式的,但Java程序员应该可以阅读。使用Spring Security,您可以编写自定义过滤器来实现所需的功能。例如,这个检查读取授权头,并通过在数据库中查找令牌来验证令牌是否有效
您可以使用类似的模式。您可以读取cookie并对用户进行身份验证,而不是读取授权头。您可以轻松覆盖Spring安全实现
使用cookie标识浏览器以持有权限看起来是一种奇怪的设计。更接近的是Spring框架中的标准RememberMe选项,但它仅在成功身份验证后使用,并且仅用作下一次连接的提示。。。