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

如何在401上记录请求的有效载荷详细信息当尝试在springbooAPI中发布时,未授权的错误

卞轶
2023-03-14

我有一个情况,我需要知道请求的有效载荷详细信息时,POST请求得到401未经授权的错误。我认为我们将无法捕获有效载荷时,请求没有使其到APIendpoint由于未经授权的错误。在到达此终结点之前,它将被过滤掉。

我正在使用Springboot 2.1。6.

我的控制器方法如下

@PostMapping(value = "/users", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<PayloadResponse> processPayload(@RequestBody String payload) {
    logger.info("Received a payload: {}", payload);
}

有没有什么方法可以记录这个负载,甚至401错误?提前谢谢

共有2个答案

左丘嘉木
2023-03-14

您可以使用@ControlllerAdtions处理各种请求,读取它们的有效负载(如果提供的话),并返回相应的响应。

计泉
2023-03-14

您不能使用任何SpringMVC机制来捕获和记录这种错误,因为它发生在进入MVC堆栈之前。@Controler忠告不会做任何事情。

您可以扩展AuthenticationEntryPoint并通过

@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {

   protected void configure(HttpSecurity http) throws Exception {

        http.exceptionHandling()
                    .authenticationEntryPoint(new CustomAuthenticationEntryPoint())

    }
}

像这样延伸

public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint {

    @Override
    public void commence(HttpServletRequest req, HttpServletResponse res,
                         AuthenticationException authException)
            throws IOException {

        res.setContentType("application/json;charset=UTF-8");
        res.setStatus(401);
        res.getWriter().write(JsonUtil.getWriteMapper().writeValueAsString(
                new ErrorRestResponse(authException,false,""))); //This is my custom error response
        
        // You can put logging code around here

    }
}
 类似资料:
  • 我正在尝试登录基于cloudflare服务器的网站。我使用cloudserver绕过了登录问题,但我的下一个停止点是当我试图发送get请求以访问一些登录后令牌时。 我的代码: 这返回401作为答案: 它的标题是 好的,我首先试着给一个auth。这样地 我再次得到相同的错误,401,但这次响应的头确实有一个www身份验证,我应该质询 根据我所读到的内容,它是基本的意味着我必须在我的头文件中添加一个像

  • 问题内容: 我正在使用文件上传器,并且需要请求有效负载中的详细信息以进行裁剪。 我没有10位代表来发布POST请求的图片,但是它有 所以从avatar_data我所需要的,,,和。我知道我必须封送JSON,但是我不确定如何达到这一点? 问题答案: 实现接口。

  • 问题内容: 我正在使用 PHP , ExtJS 和 ajax存储 。 它不通过POST或GET发送数据(在创建,更新,销毁时)。在 Chrome控制台中, 我在“ 请求有效负载 ”字段中看到我的传出参数为JSON 。 $ _POST 和 $ _GET 为空。 如何在PHP中检索它? 问题答案: 如果我正确理解这种情况,那么您只是通过http正文传递了json数据,而不是数据。 您可以使用以下代码段

  • 我已经为此挠头两天了。我使用WebAPI版本2.2和我使用CORS。这个设置工作在服务器端,我被允许从我的web客户端服务器代码获得授权的内容,但在我的ajax调用中获得未经授权的内容。 以下是我的配置: Web API配置 WebApiConfig: Startup.Auth.cs: (我已经尝试了app.UseCors(CorsOptions.AllowAll)和config.EnableCo

  • 我的数据未发布在postman api中,这会导致以下错误: 单调的节奏。我的主人。com/api/领域:1个职位http://dradiobeats.x10host.com/api/areas401(未授权)核心。js:4002错误HttpErrorResponse 我的app.component.ts 如何解决此错误?

  • 我试图创建一个请求python脚本,将添加到购物车,并最终结帐。我发了一个帖子请求(https://yeezysupply.com/cart/add.js)这是我在网络chrome开发者工具页面中找到的添加到购物车的endpoint。它有一个包含3个字典的json负载。Id是产品的变体Id,我不知道它是什么,所以我把它留空了,还有数量。当我执行Post请求时,我将数据作为参数输入。我收到一个400