一、该问题的重现步骤是什么?
1. boot版本配置blade.secure.skip-url对应接口后,只有Authorization客户端请求头没有blade-auth此时去访问这个接口:客户端认证失败,请求接口。
2.
3.
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
这俩配置没有直接关系,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
我设置好了客户端的请求头,但是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; } } }
扫一扫访问 Blade技术社区 移动端