本文共 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(); } LambdaQueryWrapperwrapper = 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/