【发布时间】:2016-04-12 14:51:47
【问题描述】:
我正在开发一个 spring boot 应用程序,我正在关注这个reply, 尽管需要进行一些调整才能使其在 Spring Boot 上工作,但一切正常,但问题是当我打电话时:
requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
它返回“404 Not Found”而不是“401 Unauthorized”,该方法被调用,它捕获异常但返回错误状态。
Obs:如果我删除过滤器的约束,它会正常工作。
过滤器:
@Secured
@Provider
@Component
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
String authorizationHeader = requestContext.getHeaderString(HttpHeaders.AUTHORIZATION);
if (authorizationHeader == null || !authorizationHeader.startsWith("Bearer ")) {
throw new NotAuthorizedException("Authorization header must be provided");
}
String token = authorizationHeader.substring("Bearer".length()).trim();
try {
validateToken(token);
} catch (Exception e) {
requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
}
}
private void validateToken(String token) throws Exception {
}
}
资源:
@Component
@Path("/")
public class Hello {
@Secured
@GET
@Path("/hello")
public String test() {
return "Hello!";
}
@GET
@Path("/world")
public String world() {
return "World!";
}
}
【问题讨论】:
-
试试this out
-
非常感谢,请做出正确的答复,以便我选择您的答案。
-
不如把它当作一个骗子来关闭 :-) 用例可能不一样,但原因是一样的。
标签: java spring spring-boot jersey jax-rs