zoukankan      html  css  js  c++  java
  • 拦截器加自定义注释进行权限校验

    首先需要自定义注释
    @Target(ElementType.METHOD)//使用地点
    @Retention(RetentionPolicy.RUNTIME)//编译运行期都有效
    public @interface Login {

    }
    拦截机制与非注解相似
    public class AuthorizationInterceptor implements HandlerInterceptor {
    //返回false 不会执行handler方法 和其他拦截器
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    Class<?> methodClass = handler.getClass();
    // class1.isAssignableFrom(class2) 判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。如果是则返回 true;否则返回 false
    boolean flag = methodClass.isAssignableFrom(HandlerMethod.class);
    if (flag){
    Login login = ((HandlerMethod) handler).getMethodAnnotation(Login.class);
    //判断是否有注解
    if (login!=null){
    response.setContentType("application/json;charset=utf-8");
    User user = (User) request.getSession().getAttribute("user");
    if (user==null){
    PrintWriter out = response.getWriter();
    ObjectMapper objectMapper = new ObjectMapper();
    String result = objectMapper.writeValueAsString(new Result(false, "未登录2!"));
    out.write(result);
    return false;
    }
    }
    }
    return true;
    }
    // handler方法执行完成后执行 前提是preHandler返回true
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
    }
    //响应视图前执行 前提是preHandler返回true
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
    }
    }

  • 相关阅读:
    SQL 语法解释器jsqlparser
    《JAVA与模式》之解释器模式
    程序猿应该了解的内容以及程序猿如何强迫自己学习(思考篇)
    强迫自己学习(心态篇),国庆,你准备去哪疯?
    强迫自己学习(实践篇),以及关于写博客的几点建议
    JAVA GC垃圾收集器的分析
    JVM内存模型及内存分配过程
    Extended Traffic LightOJ
    HDU 4616 Game 树形DP
    POJ 3164 Command Network
  • 原文地址:https://www.cnblogs.com/x-i-n/p/14192560.html
Copyright © 2011-2022 走看看