博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于spring AOP的 权限校验
阅读量:3952 次
发布时间:2019-05-24

本文共 2155 字,大约阅读时间需要 7 分钟。

package com.example.mongodemo.config;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.example.mongodemo.dto.ResultDTO;import com.example.mongodemo.mapper.ManagerMapper;import com.example.mongodemo.pojo.Manager;import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestAttributes;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;/** * @Author lyr * @create 2020/4/2 0:00 */@Aspect@Component@Slf4jpublic class CheckIdentityHandler {
@Pointcut("@annotation(CheckIdentity)") public void delegate(){
} @Autowired private ManagerMapper managerMapper; @SneakyThrows @Around("delegate()") public Object around(ProceedingJoinPoint pjp) {
RequestAttributes ra = RequestContextHolder.getRequestAttributes(); ServletRequestAttributes sra = (ServletRequestAttributes) ra; HttpServletRequest request = sra.getRequest(); String managerUnionId = (String) request.getAttribute("unionId"); if(managerUnionId==null) {
return fail(); } LambdaQueryWrapper
wrapper = new LambdaQueryWrapper<>(); Object result; boolean hasRole = managerMapper.selectOne(wrapper.select(Manager::getManagerId).eq(Manager::getUnionId,managerUnionId))!=null; if(hasRole) {
log.info("校验 通过"); result = pjp.proceed(pjp.getArgs()); }else {
result = fail(); } return result; } /** * @return 权限校验失败 --> 用户无管理员 权限访问资源 */ private ResultDTO fail() {
log.info("校验不通过"); return ResultDTO.getNoAuthority(); }}

转载地址:http://aauzi.baihongyu.com/

你可能感兴趣的文章
java基础学习之抽象类与接口的区别
查看>>
java基础学习之包、类、方法、属性、常量的命名规则
查看>>
java基础知识学习之匿名内部类
查看>>
SSM框架和SSH框架的区别
查看>>
Elasticsearch-基础介绍及索引原理分析
查看>>
过滤敏感词算法
查看>>
linux学习之shell脚本if判断参数-n,-d,-f等
查看>>
linux学习之windos文件在linux里面乱码解决
查看>>
idea快捷键
查看>>
linux学习之shell遍历数组
查看>>
python函数取参及默认参数使用
查看>>
linux学习之shell中的${},##, %% , :- ,:+, ? 的使用
查看>>
Spring学习之Filter、Interceptor、Aop实现与区别
查看>>
Spring 添加@Autowired注释, 注入对象却为空
查看>>
springSecurity学习
查看>>
通过Java的api操作redis
查看>>
jquery基本选择器
查看>>
linux学习之shell字符串大小写转换
查看>>
Linux下用base64对字符串进行加密解密
查看>>
H5走迷宫小游戏
查看>>