首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spring boot筛选器未返回正确响应

spring boot筛选器未返回正确响应
EN

Stack Overflow用户
提问于 2016-01-08 09:57:09
回答 1查看 755关注 0票数 1
代码语言:javascript
运行
复制
requestContext.abortWith(Response.status(Response.Status.UNAUTHORIZED).build());

它返回"404未找到“而不是"401未授权”,方法被调用,它捕获异常但返回错误的状态。

Obs:如果我去掉过滤器的约束,它就能正常工作。

过滤器:

代码语言:javascript
运行
复制
@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 {
}
}

资源:

代码语言:javascript
运行
复制
@Component
@Path("/")
public class Hello {

@Secured
@GET
@Path("/hello")
public String test() {
    return "Hello!";
}
@GET
@Path("/world")
public String world() {
    return "World!";
}
}
EN

回答 1

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34668294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档