# 自定义拦截器

编写java代码如下:

/**
 * 拦截请求
 */
@Component
@Order(1) //拦截器顺序,可选
public class MyInterceptor implements RequestInterceptor {

   /*
   * 当返回对象时,直接将此对象返回到页面,返回null时,继续执行后续操作
   */
   @Override
   public Object preHandle(ApiInfo info, MagicScriptContext context) {
       System.out.println("请求前:" + info.getPath());
       // 拦截请求并直接返回结果,不继续后续代码
       // 需要注意的是,拦截器返回的结果不会被包裹一层json值,也不会走ResultProvider
       // return new JsonBean<>(100,"拦截器返回");
       // 放开请求,执行后续代码
       return null;
   }
    /**
     * 执行完毕之后执行
     * @param value 即将要返回到页面的值
     * @return 返回到页面的对象,当返回null时执行后续拦截器,否则直接返回该值,不执行后续拦截器
     */
   @Override
   public Object postHandle(ApiInfo info, MagicScriptContext context, Object value) {
       System.out.println("请求后:" + info.getPath());
       System.out.println("返回结果:" + value);
       // 拦截请求并直接返回结果,不继续后续代码
       // 需要注意的是,拦截器返回的结果不会被包裹一层json值,也不会走ResultProvider
       // return new JsonBean<>(100,"拦截器返回");
       // 放开请求,执行后续代码
       return null;
   }
    /**
     * 是否允许访问页面按钮(此方法可以不重写,默认允许访问所有按钮)
     */  
   @Override
   public boolean allowVisit(HttpServletRequest request, Authorization authorization) {
   	   // Authorization.SAVE    保存
       // Authorization.DETAIL  查看详情
       // Authorization.RUN     执行
       // Authorization.DELETE  删除
       // 不允许执行删除和保存方法
      return authorization != Authorization.DELETE && authorization != Authorization.SAVE;
   }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48