我有一个controller里面有几个函数,有的只允许学生调用,有的只允许管理员调用,有什么办法根据自己的需要使用不同的拦截器呢?
比如book/addbook只允许管理员调用,而book/findbookbyname又允许登陆的人都可以调用,
spring mvc 不同权限,拦截器问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 愿意终身奋斗的小强 2017-04-11 07:27关注
自定义一个注解,该注解用于需要做权限控制的方法上。自定义注解比如
@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface AuthActionModel { //值可为:student,teacher,当值为all时所有人可访问 String type() default "all"; }
在方法上使用实例:
@AuthActionModel(type="student")
最后就是如何控制权限了,
思想就是:在自定义拦截的preHandle方法中对当前拦截的请求进行解析,获得当前请求方法的@AuthActionModel(type="student")这个注解
的type值,如果当前系统登录用户与该type值匹配,则继续执行,否则返回false。获得自定义注解的type属性值:
preHandle方法有个handler参数,做如下处理HandlerMethod handlerMethod = (HandlerMethod) handler; AuthActionModel authActionModel = handlerMethod.getMethodAnnotation(AuthActionModel.class); if(null!=authActionModel) { String type = authActionModel.type(); -----进行其他操作------ }
打了这么多字不容易,请采纳,如果你看不懂,你需要先了解自定义注解,自定义拦截器,以及拦截器中的preHandler的第三个参数!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报