一、该问题的重现步骤是什么?
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技术社区 移动端