为什么在过滤器中使用UserDetailsS​​ervice?智威汤逊

时间:2019-12-30 10:09:24

标签: jwt jwt-auth

我检查了很多jwt的教程和示例,例如,如果您在Google中搜索“ spring-security jwt示例”,则可能会看到以下链接:

  1. https://www.callicoder.com/spring-boot-spring-security-jwt-mysql-react-app-part-2/
  2. https://dzone.com/articles/spring-boot-security-json-web-tokenjwt-hello-world
  3. https://www.javainuse.com/spring/boot-jwt

问题),它们的authFilter使用UserDetailsS​​ervice,因此它们从数据库中获取数据,因为它只是一个简单令牌,而不是JWT。

所以我想我听不懂。

UPD :我会做什么:

或创建我的自定义身份验证和自定义AuthProvider。

或者仅使用JwtUtil类将解码jwt,然后创建默认的UsernamePasswordAuthToken并将其设置为SecurityContextHolder。

1 个答案:

答案 0 :(得分:0)

经过另一次审核,我发现我错过了Rajeev Singh's tutorial on callicoder

中的重要提示
  

请注意,在上述过滤器中命中的数据库是可选的。你可以   还可以在JWT声明中对用户的用户名和角色进行编码,并创建   通过解析来自JWT的那些声明来创建UserDetails对象。那   可以避免数据库命中。

     

但是,从数据库中加载用户的当前详细信息   可能仍会有所帮助。例如,您可能想禁止登录   如果用户的角色已更改或用户已更新,则使用此JWT   创建此JWT后的密码。

相关问题