当前位置: 首页 > 知识库问答 >
问题:

Spring启动过滤器不返回正确的响应[重复]

严阳秋
2023-03-14

我正在开发一个spring boot应用程序,我关注这个回复,尽管需要进行一些调整才能在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!";
}
}

共有1个答案

赵驰
2023-03-14

我假设您正在使用Jersey API构建RESTful接口。您接收的404与(我认为)@path(Jersey)或@requestmapping(spring)有关。

如果您发布了更多与API路径相关的代码,那么我们可以进一步提供帮助。

谢谢你。

 类似资料:
  • 我正在开发一个Spring启动应用程序。我想通过请求正文字段“Id”修改请求的响应。 我已经实现了下面的代码,但是在实现的时候输出的仍然只是名字。任何关于实施以下内容的建议都会有所帮助: 下面是请求体: 作为响应,我想将该字段附加到响应id(来自请求正文的字段名)。响应体: MyCustomFilter: 我的请求包装: MultiReadHttpServletRequest.java { } 感

  • 我有以下控制器: 重启控制器。爪哇 我已经使用mockMvc对web层进行了测试,用户服务bean按照标准进行了模拟: 重启控制器监控测试。爪哇 test正在返回404而不是200状态,并且没有返回正文中的错误消息,这暗指404不是“真正的”404(它没有返回,因为正确的响应正在返回,它返回是因为其他原因)。我还认为其他404状态中的一些可能会在相同的上下文中返回。

  • 我正在尝试使用WireMock创建动态模拟。我有一个情况,如果我指定URL,如 对于这种要求 我可以使用什么,所以响应将过滤掉id和角色并放入响应中。 我正在使用独立的线框罐2.27.2来创建线轮服务器。

  • JMeter版本:2.10.ActiveMQ 5.9 我有一个点对点JMeter脚本,它成功地将消息放置在队列中。然后,该消息被消费、转换并放置在不同的队列中。当我只测试一个请求方法(来自jmeter)时,消息被成功提交、转换并返回到输出队列,然而,当我配置jmeter以使用输出队列上的响应时,它将原始请求消息负载显示为响应。 以下是我的JMeter脚本详细信息: > JMS资源 QueueuCo

  • 我试图用两个不同的过滤器来配置spring security。我想要的是有一些将由一个过滤器处理的网址,和一些将由其他过滤器处理的网址。这是我想到的设置: 过滤器看起来像这样: 过滤器1 : 过滤器2 : 问题是这两个过滤器都是在一个链中为每个请求调用的。我提出的任何请求,它首先通过一个过滤器,然后通过另一个,而不是仅仅通过一个。 我该怎么解决这个问题? 提前感谢。

  • 我想在Spring Security过滤器中修改响应的内容。假设我想要的如下: 过滤器后面有一个REST服务,它检索字符串列表。如果我使用getOutputStream()进行写入,那么我可以在客户端上读取字符串列表(而不是字符串“Hello”)。如果我使用getWriter(),那么我会收到以下错误: 如何修改Spring安全过滤器中的响应内容?顺便说一句,我使用野蝇10,但它也应该适用于雄猫和

  • 我将这个字符串从客户端发送到服务器: 该字符串是由服务器打印出来的,所以它是正确的。 “AR”是数据包名称,值是弓箭手将要射出的箭的速度。 这里出什么问题了?

  • 我正在开发一个连接到平板电脑时与USB设备通信的应用程序。为了避免用户接受android访问设备,我设置了一个意图过滤器: 我的问题是,有了这个意图过滤器,每次我插入设备并启动另一个活动时都会调用“onCreate”方法,如果没有意图过滤器,它只会被调用一次。这是“onCreate”方法: 广播接收机: 简单连接到设备的“setDevice”方法: 为什么?