我想在网页上登录用户,但不使用用户名和密码,而是使用令牌。 所以我有两张桌子
User:
id
username
password
Token:
id
user_id
token
现在如果用户在浏览器页面中打开domain.com/token/{token} 然后应该通过令牌找到user_id并为该用户角色,prives等加载
我在谷歌上搜索,但只找到了JWT(Rest API)的解决方案。
感谢您的建议
更新
系统将为用户生成令牌,并将条目添加到Token
表。
Ex:令牌为:令牌3333,用于ID为3的用户;)
当用户转到domain.com/token/token3333页面时,会自动将其记录为ID为3的用户,而不会填写用户名和密码。
答案 0 :(得分:0)
Spring安全性很容易扩展,但您必须手动手动。
我真的不明白为什么你的登录系统只有一个令牌比传统的用户名+密码登录页面更好,恕我直言,你应该三思而后行。
一种简单的方法是在这里使用spring-mvc控制器来处理url domain.com/token/{token},在数据库中查找用户ID并直接构建完全认证的身份验证令牌。然后你只需要输入从SecurityContextHolder类的静态方法获得的SecurityContext。
如果您希望在不依赖spring-mvc的情况下更好地集成到Spring安全性中,则应该设置一个自定义身份验证处理过滤器,该过滤器将使用URL中传递的令牌来构建有效的自定义身份验证。它应该来自AbstractAuthenticationProcessingFilter。然后,您应该设置AuthenticationProvider
能够处理该令牌,并通过令牌实际验证用户,并将其注入AuthenticationManage。这里有更多的沸腾盘,对于你目前的问题,我真的不确定它是否值得。