security入门介绍:https://www.jianshu.com/p/76bfa6743ba9
springb-boot + spring security + jwt项目整合
目录结构参考:
https://blog.csdn.net/lovelichao12/article/details/123319405
一.前后端分离登录:
前后端分离登录:https://blog.csdn.net/lovelichao12/article/details/123319405
使用spring Security + JWT 实现前后端分离登录:https://blog.csdn.net/qq_21602341/article/details/114577740
获取当前登录用户
在JwtAuthenticationTokenFilter中往SecurityContextHolder注入了一个用户对象,在实际的方法中,从中取出即可。
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
SysUser sysUser = (SysUser) authentication.getPrincipal();
二.jwt认证:
https://blog.csdn.net/qq_43799161/article/details/123854833
三.基于url权限处理:
https://blog.csdn.net/m0_68850571/article/details/124086838
SpringSecurity实现动态url拦截(基于rbac模型):https://www.jb51.net/article/220047.html 不详细,需要结合上一篇
反思:SpringSecurity的登陆认证流程源码分析:https://blog.csdn.net/DreamsArchitects/article/details/116662714
四.security异常统一处理
分为两部分:认证异常、授权异常
security异常都处理了,返回的都是json格式数据,所以需要手动处理
异常情况:
未登录访问不存在的接口 用户未登录 401
未登录访问需要授权的接口 用户未登录 401
登录访问不存在的接口 404 not found
登录访问权限不足的接口 403 Forbidden
token没有传 用户未登录 401
token无法解析 无效的token 401
token过期 无效的token 401
security知识点:
AbstractAuthenticationProcessingFilter.doFilter()
security-oauth2的使用
//新增了一个过滤器,先根据clientId加载clientClients
security.oauth2.provide.client.ClientCredentialsTokenEndpointFilter.attemptAuthentication()
->security.authentication.ProviderManager
->security.oauth2.provide.client.ClientDetailsUserDetailsService
//自定义clientDetails
->security.oauth2.provide.ClientDetailsService==>ClientDetails
->security.authentication.dao.DaoAuthenticationProvider
AbstractUserDetailsAuthenticationProvider
<-
<-
TokenEndpoint.postAccessToken();
->//校验用户clientClients
spring security(二)springb-boot + spring security + jwt
于 2023-02-14 10:49:09 首次发布