【转载】spring-security-oauth2(二十六) Spring Security授权源码解析

原理流程图 

spring security的基本原理之前讲解过了。这章主要看后面两个:

FilterSecurityInterceptor

决定该用户是否有权限访问指定的资源

ExceptionTranslationFilter

异常处理,如果不能访问,则处理FilterSecurityInterceptor中抛出的异常

AnonymousAuthenticationFilter

AnonymousAuthenticationFilter : 匿名过滤器,位置固定,前面所有的都走完之后,会经过该过滤器。

这个类就是给用户一个匿名用户及权限,如果用户没有认证。

 

授权控制

FilterSecurityInterceptor(入口)

AccessDecisionManager 管理什么呢? AccessDecisionVoter :投票者

就是用来一系列的判定,是否可以进行访问什么的

AffirmativeBased: 只要有一票通过就通过(默认)

ConsensusBased :通过/不通过 哪一个票数多就遵循哪一个
UnanimousBased :只要有一票否决则不允许访问

AccessDecisionVoter 投票者 spring3-,由一堆实现类来解决 
WebExpressionVoter: spring3+ 由该类全部包办,它投过就过,不过就不过(spring表达式)

SecurityConfig 所有的配置信息
ConfigAttribute 对应了每一个url的配置信息
SecurityContextHolder
Authentication 用户身份信息,用户拥有的权限信息

主流程:拿到 配置信息,用户身份信息,请求信息 然后给投票者进行投票;最后根据策略进行决定是否放行

 未登录访问被拦截

结合上面的流程原理

访问:http://localhost:8060/user/1 进行断点调试

org.springframework.security.web.access.intercept.FilterSecurityInterceptor#doFilter

org.springframework.security.access.intercept.AbstractSecurityInterceptor#beforeInvocation

org.springframework.security.access.vote.AffirmativeBased#decide  默认实现

org.springframework.security.web.access.ExceptionTranslationFilter#doFilter 捕获异常处理

源码就简单分析到这里,可以自己断点调试。 

文章转载至:[https://blog.csdn.net/ahcr1026212/article/details/89855803](https://blog.csdn.net/ahcr1026212/article/details/89855803)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值