Spring AOP做权限控制
2018-01-20 13:37
344 查看
最近看项目代码,发现权限管理部分的代码都是直接写在controller层。
那么熟悉Spring的同学很明显发现了,这是典型的可以用切面处理的重复代码。
那么具体怎么处理呢,我先给出我的处理方式:
定义一个注解@Purview
这个注解中什么都不用写,就是用来做切面标记的。
然后写我们的Aspect:
在此,对有@Purview注解的方法做一个权限判断,具体判断方法私有化出来就可以了。
当然,也可以做一些其他操作,这里就不做过多阐述了。
忙的一塌糊涂,这次就写到这里了。O(∩_∩)O~~
那么熟悉Spring的同学很明显发现了,这是典型的可以用切面处理的重复代码。
那么具体怎么处理呢,我先给出我的处理方式:
定义一个注解@Purview
import java.lang.annotation.*; @Target({ ElementType.METHOD, ElementType.TYPE }) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Purview { }
这个注解中什么都不用写,就是用来做切面标记的。
然后写我们的Aspect:
import com.alibaba.fastjson.JSON; import com.alipay.marketingservice.util.ConstantManager; import com.alipay.opbiservice.common.Result; import com.alipay.opbiservice.vo.UserVo; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; @Aspect @Component public class PurviewAspect { private static final Logger LOGGER = LoggerFactory.getLogger(LogAspect.class); /** * 捕获@Purview注解的方法,在方法执行前进行权限判断 */ @Before("@annotation(com.alipay.marketingservice.aspect.Purview)") public void doPurview(JoinPoint point) throws Throwable{ String clazz =point.getTarget().getClass().getName(); // 获取目标对象上正在执行的方法名 String methodName =point.getSignature().getName(); LOGGER.info("开始权限判断:" + clazz + "类的" + methodName + "方法"); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Result purview = checkPurview(request); if (null != purview) { throw new Exception("权限不满足"); } }
在此,对有@Purview注解的方法做一个权限判断,具体判断方法私有化出来就可以了。
当然,也可以做一些其他操作,这里就不做过多阐述了。
忙的一塌糊涂,这次就写到这里了。O(∩_∩)O~~
相关文章推荐
- 基于SSH2增删改查_控制层Action_Spring Aop权限控制基本实现(6)
- spring aop 拦截业务方法,实现权限控制示例
- Spring Boot使用aop进行权限控制
- spring AOP + 自定义注解实现权限控制小例子
- spring aop实现权限控制
- Spring aop 事物控制,日志记录,权限控制
- spring AOP + 自定义注解实现权限控制小例子
- 基于spring security及spring aop的权限控制
- springAOP与自定义注解实现细粒度权限控制管理
- Spring的控制反转(IoC)和面向切面编程(AOP)的概念浅析。
- AOP下的权限控制实现
- Spring Boot 之 RESRful API 权限控制
- springboot-29-security(二)用户角色权限控制
- springboot-30-security(三)使用注解实现权限控制
- spring学习笔记(19)mysql读写分离后端AOP控制实例
- spring 权限控制
- 使用Spring 的 AOP 实现权限管理
- 10035---Spring整合Shiro做权限控制模块详细案例分析
- Spring学习一:IOC(控制反转)和AOP(面向切面)的xml配置和注解方式
- springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】