SpringSecurity
2021-05-03 15:20:05 5 举报
SpringSecurity
作者其他创作
大纲/内容
*Producer 生产
权限不足accessDeniedHandler
失败 failureHandler 多情况
开始鉴权获取url对应的角色列表FilterInvocationSecurityMetadataSource.getAttributes()
退出 logoutSuccessHandler
url角色检验AccessDecisionManager
过滤器
………
你要确保每次请求getContext都拥有UsernamePasswordAuthenticationToken这UserDetails里面包括用户信息和权限信息在鉴权的时候使用,如果不设置当前用户将为匿名用户,触发未登录异常
未登录 authenticationEntryPoint
处理
UsernamePasswordAuthenticationFilter
ImageValidateCodeProcessor
url是否放行
然后UsernamePasswordAuthenticationFilter
如果存在,则设置当前用户信息,包括拥有角色
N
*Mode枚举模式
未登录401AuthenticationEntryPoint
AbstractValidateCodeProcessor1. ValidateCode create2. boolean validate
UserDetailsServiceImpl
Y
过滤器说明:如果你在一个异常中检测到了错误(比如验证码异常,那么你应该 PrintWriter writer = response.getWriter(); writer.print(\"ValidateCodeFilter校验失败\
登录
包括
鉴权通过,执行真正请求
没有权限403AccessDeniedHandler
ValidateCodeEnum 验证类型枚举SMS,IMAGE,EMAIL……
可能有很多拦截器
ValidateCodeFilter 过滤器
执行url请求接口/资源
配置当前Authentication
UserDetails
EmailValidateCodeProcessor
首先AbstractPreAuthenticatedProcessingFilter
验证码对象ValidateCode
ValidateCodeException 验证异常
SmsValidateCodeProcessor
执行AccessDecisionManager.decide()是否抛出AccessDeniedException异常
url角色查询SecurityMetadataSource
登录loginProcessingUrl退出logoutUrl放行资源permitAll
被OncePerRequestFilter统一拦截
*Properties 属性
请求
成功 successHandler
用户是否未登录AnonymousAuthenticationToken
AbstractPreAuthenticatedProcessingFilter
ValidateCodeProcessorHolderfindValidateCodeProcessor
收藏
收藏
0 条评论
下一页