zoukankan      html  css  js  c++  java
  • spring boot 使用拦截器,注解 实现 权限过滤

    这里的权限过滤,配合注解来使用,我目的是只要加上了特定注解的方法,才会进行校验(如果不需要的话,可以将判断注解的逻辑去掉,就跟一般的一样了)
     
    1:定义注解:
    /**
     * 权限校验
     */
    @Documented
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface RoleCheck {
        RoleEnum[] role();
    }
    userRoleEnum里定义角色的值
     
    2:创建RoleInterceptor 类,重写peHandle方法,方法中写具体的校验逻辑
    /**
     * 用于角色校验
     *
     */
    @Service
    public class RoleInterceptor extends BaseHandlerInterceptorAdapter {
         @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HandlerMethod handlerMethod = (HandlerMethod) handler;
            RoleCheck roleCheck = handlerMethod.getMethodAnnotation(RoleCheck.class);
            //如果方法上没有roleCheck注解,则校验通过
            if (roleCheck == null){
                return true;
            }
            //该方法未赋予权限,不通过
            if (roleCheck.role() == null){
                return false;
            }
        }
    }
     
    3:在要拦截的方法上加入注解
    @RequestMapping(value = {“/getstudent"})
    @RoleCheck(role = {RoleEnum.TEACHER})
    public String getStudentInfo(@RequestParam String studentNo) {
        return studentManager.getstudentInfoByNo(studentNo);
    }
     
    2:创建一个自定义的adapter的类,继承WebMvcConfigurerAdapter 类
    @Configuration
    public class DefineAdapter extends WebMvcConfigurerAdapter {
    @Autowired
    public RoleInterceptor roleInterceptor;
    @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(roleInterceptor).addPathPatterns("/getstudent");
            super.addInterceptors(registry);
        }
    }
    重写 addInterceptors方法,将你要拦截的url加入。
     
    WebMvcConfigurerAdapter 继承后,拦截器会在工程启动的时候就加入进来
  • 相关阅读:
    ==和equals区别
    如何创建一个不可变类
    mysql用户的创建和授权
    事务
    Java知识点检测
    Redis
    正则表达式中match的用法
    rfind的用法
    找出文件夹里所有的文件路径
    合并多个pdf文件
  • 原文地址:https://www.cnblogs.com/zhangXingSheng/p/7744997.html
Copyright © 2011-2022 走看看