spring boot 使用拦截器,注解 实现 权限过滤
2017-10-27 20:06
549 查看
这里的权限过滤,配合注解来使用,我目的是只要加上了特定注解的方法,才会进行校验(如果不需要的话,可以将判断注解的逻辑去掉,就跟一般的一样了)
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 继承后,拦截器会在工程启动的时候就加入进来
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 继承后,拦截器会在工程启动的时候就加入进来
相关文章推荐
- 在struts2.1中使用注解和拦截器实现权限细粒度控制
- 在struts2.3.4.1中使用注解、反射、拦截器实现基于方法的权限控制
- struts2 使用注解、反射、拦截器实现基于方法的权限控制
- 在struts2.1中使用注解和拦截器实现权限细粒度控制
- 利用注解加拦截器实现struts2的权限设置
- 利用struts2拦截器加自定义注解实现权限控制
- Spring MVC 使用拦截器优雅地实现权限验证功能
- 【Spring MVC】教程——使用拦截器实现权限控制
- [置顶] 使用struts拦截器+注解实现网络安全要求中的日志审计功能
- 使用拦截器实现权限管理
- 基于拦截器和注解实现页面的访问权限控制
- 使用springmvc拦截器+自定义注解做权限管理
- 使用Struts2的拦截器实现权限控制
- 使用拦截器实现上传文件的过滤
- 通过注解在方法级别上使用拦截器做登录权限校验
- Spring MVC使用拦截器实现权限控制
- struts2 使用拦截器 实现用户权限的验证
- 自定义注解+拦截器实现权限控制
- 用拦截器,注解实现权限
- Spring MVC 使用拦截器优雅地实现权限验证功能