2016-12-27 102 views
0

我想在网页上登录用户,但不使用用户名和密码,而是使用令牌。 所以我有两个表春季安全用令牌登录到网络

User: 
id 
username 
password 

Token: 
id 
user_id 
token 

所以现在,如果用户在浏览器页面domain.com/token/{token开} 那么应该由令牌和负载为用户角色,prives找到USER_ID等

我在网上搜索,但只找到JWT(Rest API)的解决方案。

感谢意见

UPDATE 系统将会为用户令牌,将增加进入Token表。

例:令牌是:token3333用于与ID 3用户)

当用户进入页面domain.com/token/token3333然后自动将被记录为ID为3的用户在没有用户名和密码进行填充。

+0

https://spring.io/blog/2015/01/20/the-resource-server-angular-js-and-spring-security-part-iii这是一个基于令牌的授权的春季教程。 – Reek

+0

@Reek我几乎可以肯定,教程不是我问的。有'X-Auth-Token'头带令牌请求发送,所以这不是我需要的 – Robert

回答

0

弹簧安全性很容易扩展,但您必须手动执行

我真的不明白为什么你的登录系统与一个单一的令牌比古典的用户名+密码登录页面更好,恕我直言,你应该考虑三次真正的原因。

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

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

+0

感谢您的建议。 – Robert