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
@Slf4j
public 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<Manager> 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();
}
}
基于spring AOP的 权限校验
猜你喜欢
转载自blog.csdn.net/qq_43923045/article/details/105259643
今日推荐
周排行