做网站最好的网络公司,设计规范网站,苏州企业网站制作设计公司,推广运营培训课程本篇文章的主要内容是通过AOP切面编程实现简单的权限校验。 书接上回登录与注册功能 我们的用户表里面不是有role(权限)这个字段吗 在JWT令牌的生成中#xff0c;我们加入了role字段。 那么接下来#xff0c;我们就可以通过这个字段来实现权限校验。 我这里就很简单#x…本篇文章的主要内容是通过AOP切面编程实现简单的权限校验。 书接上回登录与注册功能 我们的用户表里面不是有role(权限)这个字段吗 在JWT令牌的生成中我们加入了role字段。 那么接下来我们就可以通过这个字段来实现权限校验。 我这里就很简单只有一个Permission注解和一个PermissionAspect类 Permission
Retention(RetentionPolicy.RUNTIME)
Target(ElementType.METHOD)
Documented
Order(Ordered.HIGHEST_PRECEDENCE)
public interface Permission {/*** 最小权限* return*/int role() default 0;
}PermissionAspect类
Slf4j
Aspect
Component
public class PermissionAspect {// 定义切点Pointcut(within(org.springframework.web.bind.annotation.RestController *) annotation(com.codehome.server.annotation.Permission))public void autoPermissionPointcut(){}// 定义通知Before(autoPermissionPointcut())public void requirePermission(final JoinPoint joinPoint)throws PermissionException {log.info(权限校验开始);MethodSignature signature (MethodSignature) joinPoint.getSignature();Permission permission signature.getMethod().getAnnotation(Permission.class);Integer role permission.role();if(BaseContext.getCurrentRole() role){log.info(权限校验通过);}else {throw new PermissionException(权限不足);}}
}说明在JWT令牌生成的时候我们存入了role在JwtTokenAdminInterceptor拦截器中我们将这个role取了出来并保存到了ThreadLocal中所以在校验的时候就通过这个role进行权限校验。 权限校验使用 在Controller类中我们在每个路径方法前加上我们写的注解Permission(role2)这个就代表着只有用户权限大于等于2的用户发送到这个路径的请求才能被放行处理。这样就特别灵活。