SpringBoot 分析 @EnableGlobalMethodSecurity注解 GlobalMethodSecurityConfiguration源码

SpringBoot 分析 @EnableGlobalMethodSecurity注解 GlobalMethodSecurityConfiguration源码

GlobalMethodSecurityConfiguration

实例字段

	private DefaultMethodSecurityExpressionHandler defaultMethodExpressionHandler = new DefaultMethodSecurityExpressionHandler();
	private AuthenticationManager authenticationManager;
	private AuthenticationManagerBuilder auth;
	private boolean disableAuthenticationRegistry;
	private AnnotationAttributes enableMethodSecurity;
	private BeanFactory context;
	private MethodSecurityExpressionHandler expressionHandler;
	private MethodSecurityInterceptor methodSecurityInterceptor;

MethodSecurityInterceptor

public class MethodSecurityInterceptor extends AbstractSecurityInterceptor implements MethodInterceptor { 省略...}

实例字段

private MethodSecurityMetadataSource securityMetadataSource;

在这里插入图片描述

org.springframework.security.access.method.DelegatingMethodSecurityMetadataSource

final 修饰,包裹了一层缓存

实际执行类

org.springframework.security.access.prepost.PrePostAnnotationSecurityMetadataSource

实现类 MethodInterceptor
方法拦截器,拦截的入口。

继承类 AbstractSecurityInterceptor
具体拦截执行方法

子类 AspectJMethodSecurityInterceptor

org.springframework.security.access.intercept.aspectj.AspectJMethodSecurityInterceptor

唯一的一个子类,并且final 修饰。

MethodSecurityExpressionHandler

DefaultMethodSecurityExpressionHandler

总结

阅读源码的过程中发现大量使用一种代码编写模式
有知道模式名称请在评论内回复

抽象类
public abstract class AbstractSecurityInterceptor implements InitializingBean,ApplicationEventPublisherAware,MessageSourceAware
接口
public interface MethodInterceptor
实现类
public class MethodSecurityInterceptor extends AbstractSecurityInterceptor implements MethodInterceptor

未完… 去写代码了。仿照源码逻辑实现注解 SpEL 表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值