我正在開發一個春季啓動應用程序,我正在關注這個reply, 它一切正常,儘管需要一些適應,使其在春季啓動工作,但問題是當我撥打:春季開機過濾器不返回正確的迴應
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!";
}
}
嘗試API端點[這一點](http://stackoverflow.com/a/34321347/2587435) –
作品魅力感謝很多,請一個適當的答覆,所以我可以選擇你的答案。 – danillosl
只是把它作爲一個笨蛋關閉它:-)用例可能不一樣,但原因是一樣的。 –