shiro-spring
借助Spring AOP特性实现shiro的注解式校验
引入shiro-spring依赖后一定要注入
AuthorizationAttributeSourceAdvisor以便借助spring aop进行shiro注解校验
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
return authorizationAttributeSourceAdvisor;
}
StaticMethodMatcherPointcut
如何接入spring框架,借助spring实现自身AOP操作
一个抽象类实现 PointcutAdvisor, Ordered, Serializable 三个接口
public abstract class StaticMethodMatcherPointcut extends StaticMethodMatcher implements Pointcut
这是一个桥模式,实现Pointcut接口代表这是一个切点,但extends StaticMethodMatcher 代表这个抽象类更加适合表示为方法匹配器,一个切点+方法匹配的聚合抽象类,允许两个维度的扩展
一个双重维度的方便super class,
一些SpringAOP相关的接口
StaticMethodMatcherPointcut统合spring AOP相关描述的两个重要接口
-
MethodMatcher
一个抽象接口用于判断方法能否被增强(advice)
-
TrueMethodMatcher
一个饿汉实现的单例模式,是一个匹配所有方法的规范(Canonical)匹配器
实现
3-arg的matches方法直接抛出异常代表该方法在运行时不可被调用@Override public boolean matches(Method method, Class<?> targetClass, Object... args) { // Should never be invoked as isRuntime returns false. throw new UnsupportedOperationException(); } -
boolean matches(Method method, Class<?> targetClass);执行static的检测目标method是否符合被增强的条件 -
boolean isRuntime();运行时是否需要调用boolean matches(Method method, Class<?> targetClass, Object... args);,即使2参数的matches方法判断为true -
boolean matches(Method method, Class<?> targetClass, Object... args);只有2-arg的matches方法被调用并返回true且isRuntime也返回true该方法被立刻调用判断是否运行时动态判断
-
-
Pointcut
切入点抽象接口,由classFilter和MethodMatcher组成
所有的网络请求在servlet中都有filter来实现AOP的横切拦截处理,那么class在AOP实现中也可以有自己的ClassFilter
-
ClassFilter getClassFilter();获取类过滤器 -
Return the MethodMatcher for this pointcut.获取该pointcut的方法匹配器
-
-
Advisor
在
pointcut采取的动作在某个aspect的增强动作,可以是前置、后置、环绕等
-
&n

本文介绍了如何利用Spring AOP结合shiro-spring,通过AuthorizationAttributeSourceAdvisor实现Shiro的注解式校验,包括`@RequiresPermission`注解的处理流程和关键步骤。讲解了如何创建advisor,匹配方法以及在Spring框架中的应用过程。
最低0.47元/天 解锁文章
21万+





