SpringBoot使用拦截器实现操作权限检查
操作权限检查SpringBoot项目中,使用拦截器实现权限检查1、权限验证拦截器//实现HandlerInterceptor接口,为拦截器@Slf4jpublic class PermissionInterceptor implements HandlerInterceptor {@Autowiredprivate JwtTokenUtil jwtTokenUtil;@Autowiredpriva
·
SpringBoot项目中,使用拦截器实现权限检查
1、编写权限验证拦截器
新建拦截器类
PermissionInterceptor
,实现HandlerInterceptor
接口,即为自定义拦截器
//实现HandlerInterceptor接口,为拦截器
@Slf4j
public class PermissionInterceptor implements HandlerInterceptor {
@Autowired
private util util;
@Autowired
private PermissionService permissionService;
//controller层之前执行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//从请求头中获取所需参数
String token = request.getHeader("???").split(" ")[1];
boolean isHavePermission = checkPermission(token);
//返回 true,放行 false,拦截
if (isHavePermission){
log.info("权限检查通过::操作放行");
return true;
} else{
//设置response,手动返回response响应
response.setContentType("application/json;charset=utf-8");
Result<String> error = ResultBuilder.failWithData("权限检查失败::当前用户没有该权限", ResultCode.PERMISSION_NO_ACCESS);
Gson gson = new GsonBuilder().create();
response.getWriter().print(gson.toJson(error));
return false;
}
}
}
2、注册自定义的权限验证拦截器,做mvc扩展
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
//注册拦截器bean
//tip:使用该种方式注册,可在拦截其中使用@AutoWired注解装配bean。使用其他方式(比如new PermissionInterceptor())可能导致装配为null的情况
//详见:https://blog.csdn.net/ycf921244819/article/details/91388440
@Bean
public PermissionInterceptor permissionInterceptor(){
return new PermissionInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(permissionInterceptor())
//.excludePathPatterns("/permission/get")
//添加拦截路径 /** :拦截所有路径
.addPathPatterns("/??/??","/???/???");
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)