共计 1535 个字符,预计需要花费 4 分钟才能阅读完成。
办法一
通过 request 取得用户的 URI,再逐个循环判断是否能够操作。只是这种办法很让人好受。
办法二
通过用户要拜访的办法来判断是否有权限:
preHandle 办法中 handler 理论为 HandlerMethod,(看网上说的有时候不是 HandlerMethod),加个 instanceof 验证吧
能够失去办法名:h.getMethod().getName()
能够失去 RequestMapping 注解中的值:h.getMethodAnnotation(RequestMapping.class)
这种办法还是不太不便
举荐一个 Spring Boot 基础教程及实战示例:
https://www.javastack.cn/cate…
办法三
自定义注解,自定义注解代码:
@Retention(RUNTIME)
@Target(METHOD)
public @interface MyOperation {String value() default "";// 默认为空,因为名字是 value,实际操作中能够不写"value="
}
Controller 代码:
@Controller("testController")
public class TestController {@MyOperation("用户批改")// 次要看这里
@RequestMapping("test")
@ResponseBody
public String test(String id) {return "Hello,2018!"+id;}
}
拦截器的代码:
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {System.out.println("进入拦截器");
if(handler instanceof HandlerMethod) {HandlerMethod h = (HandlerMethod)handler;
System.out.println("用户想执行的操作是:"+h.getMethodAnnotation(MyOperation.class).value());
// 判断后执行操作...
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}
在每个办法下面加注解太麻烦啦, 能够在类上加注解
@Retention(RUNTIME)
@Target(TYPE)
public @interface MyOperation {String value() default "";
}
// 拦截器中这样取得
h.getMethod().getDeclaringClass().getAnnotation(MyOperation.class);
我能够获取 requestMapping, 不必创立自定义注解啊, 值得注意的是, 不要应用 GetMapping 等, 要应用 requestMapping。
原文链接:https://blog.csdn.net/howroad…
版权申明:本文为 CSDN 博主「howroad」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
近期热文举荐:
1.1,000+ 道 Java 面试题及答案整顿 (2021 最新版)
2. 别在再满屏的 if/ else 了,试试策略模式,真香!!
3. 卧槽!Java 中的 xx ≠ null 是什么新语法?
4.Spring Boot 2.5 重磅公布,光明模式太炸了!
5.《Java 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!