欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot使用拦截器实现操作权限检查

程序员文章站 2022-03-19 16:00:59
操作权限检查SpringBoot项目中,使用拦截器实现权限检查1、权限验证拦截器//实现HandlerInterceptor接口,为拦截器@Slf4jpublic class PermissionInterceptor implements HandlerInterceptor { @Autowired private JwtTokenUtil jwtTokenUtil; @Autowired private PermissionService permissi...

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("/??/??","/???/???");
    }
}

SpringBoot使用拦截器实现操作权限检查

SpringBoot使用拦截器实现操作权限检查

本文地址:https://blog.csdn.net/a14654/article/details/110383829