springsecurity
2020-01-31 10:01:03 39 举报
spring security
作者其他创作
大纲/内容
无法手动实现配置
1.AuthenticationProvider通过authenticate方法将filter传递的处理token2.通过UserDetailService处理principal2.将处理返回的userDetails封装到新的Token(调用第二个构造函数也就 认证成功)
SecurityContextHolder
未认证的请求,直接通Url请求
认证过的请求
不同的请求认证方式(登录方式)调用不同的过滤器处理
AuthenticationFailureHandler
UserDetailService
认证失败
认证成功
logoutFilter
微信Filter短信Filter
AbstractAuthenticationProcessingFilter过滤器拦截认证1.获取请求参数(默认通过request.getParamter())2.创建AbstractAuthenticationToken(调用第一个构造方法,也就是未认证的Token),将指定请求参数设置未principal
UsernamepasswordAuthenticationFilter
返回指定认证响应结果,或者结果页面
返回请求的页面、资源或者json
AbstractAuthenticationToken(Authentication)principal作为统一参数返回ObjectsetAuthenticated();
抛出异常
ProvideManager1.遍历provider通过每个provider中的supports方法判断token是否对应
setter在config中配置manager(包含需要的provider)
Token
Controller、resources
Exception TranslationFiltertyy{}catch{}
authentication不存在
认证过滤逻辑失败,抛出异常
判断通过ThreadLocal封装的SecurityContext(securityContextHolder获取)中的Authentication是否
securityContext(类似于seesion保存Authentication)
BasicAuthenticationFilter(默认处理登录请求)
AuthenticationSuccessHandler
securityContext
登录拦截(访问登录页面),账号密码,手机验证码等
过滤失败
authentication存在
被放过认证的请求,如放过的资源,微信回调,登录拦截的页面等
Filter Security Interceptor
认证处理
0 条评论
回复 删除
下一页