requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());
它返回"404未找到“而不是"401未授权”,方法被调用,它捕获异常但返回错误的状态。
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!";
}
}
发布于 2016-01-08 10:22:40
我假设您正在使用Jersey API构建您的RESTful接口。您收到的404与(我认为) @Path
(泽西)或@RequestMapping
(弹簧)有关。
如果您发布了更多与API路径相关的代码,我们可以提供进一步的帮助。
谢谢。
如果您查看顶级路径@Path("/")
。您添加了另一个正斜杠,因此uri最终将如下所示:
http://localhost.com//hello
http://localhost.com//world
要解决此问题,请从方法@Path
注释中删除正斜杠,然后重新构建。这应该会产生如下所示的API端点
http://localhost.com/hello
http://localhost.com/world
https://stackoverflow.com/questions/34668294
复制相似问题