boot版本配置blade.secure.skip-url客户端拦截器还是会执行

Blade 未结 1 30

一、该问题的重现步骤是什么?

1. boot版本配置blade.secure.skip-url对应接口后,只有Authorization客户端请求头没有blade-auth此时去访问这个接口:客户端认证失败,请求接口。

2. 

3.


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 这俩配置没有直接关系,auth接口本身就不会被token拦截校验,所以你配置blade.secure.skip-url也没有用。

    客户端认证失败,是你没有设置好请求头,blade-auth/token接口的参数以及步骤相关文档见:https://center.javablade.com/blade/BladeX-Doc/src/branch/master/%E7%AC%AC1%E7%AB%A0%20%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B/1.6%20%E5%B7%A5%E7%A8%8B%E6%B5%8B%E8%AF%95/1.6.2%20%E6%B5%8B%E8%AF%95Boot%E7%89%88%E6%9C%AC.md


    作者追问:2小时前

    我设置好了客户端的请求头,但是BladeUser没登录是null,此时就走else了

    @Slf4j
    @AllArgsConstructor
    public class ClientInterceptor implements AsyncHandlerInterceptor {
    
        private final String clientId;
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
            BladeUser user = SecureUtil.getUser();
            if (user != null && StringUtil.equals(clientId, SecureUtil.getClientIdFromHeader()) && StringUtil.equals(clientId, user.getClientId())) {
                return true;
            } else {
                log.warn("客户端认证失败,请求接口:{},请求IP:{},请求参数:{}", request.getRequestURI(), WebUtil.getIP(request), JsonUtil.toJson(request.getParameterMap()));
                R result = R.fail(ResultCode.UN_AUTHORIZED);
                response.setHeader(BladeConstant.CONTENT_TYPE_NAME, MediaType.APPLICATION_JSON_VALUE);
                response.setCharacterEncoding(BladeConstant.UTF_8);
                response.setStatus(HttpServletResponse.SC_OK);
                try {
                    response.getWriter().write(Objects.requireNonNull(JsonUtil.toJson(result)));
                } catch (IOException ex) {
                    log.error(ex.getMessage());
                }
                return false;
            }
        }
    
    }


    0 讨论(0)
提交回复