Spring通过令牌登录Web

时间:2016-12-27 19:34:51

标签: java spring spring-security token

我想在网页上登录用户,但不使用用户名和密码,而是使用令牌。 所以我有两张桌子

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的用户,而不会填写用户名和密码。

1 个答案:

答案 0 :(得分:0)

Spring安全性很容易扩展,但您必须手动手动

我真的不明白为什么你的登录系统只有一个令牌比传统的用户名+密码登录页面更好,恕我直言,你应该三思而后行。

一种简单的方法是在这里使用spring-mvc控制器来处理url domain.com/token/{token},在数据库中查找用户ID并直接构建完全认证的身份验证令牌。然后你只需要输入从SecurityContextHolder类的静态方法获得的SecurityContext。

如果您希望在不依赖spring-mvc的情况下更好地集成到Spring安全性中,则应该设置一个自定义身份验证处理过滤器,该过滤器将使用URL中传递的令牌来构建有效的自定义身份验证。它应该来自AbstractAuthenticationProcessingFilter。然后,您应该设置AuthenticationProvider能够处理该令牌,并通过令牌实际验证用户,并将其注入AuthenticationManage。这里有更多的沸腾盘,对于你目前的问题,我真的不确定它是否值得。