簡體   English   中英

Spring @RestController響應已經提交

[英]Spring @RestController response is already committed

我有以下代碼

@RestController
public class TokenRefreshController {
    @Autowired
    TokenAuthenticationService tokenAuthenticationService;

    @ApiOperation(value = "Generate new authentication token using a refresh token")
    @RequestMapping(value = "/token/refresh",
            method = RequestMethod.POST)
    public void refreshToken(@RequestParam("refresh") String refreshToken, HttpServletResponse response) throws IOException {
        System.out.println("WHEN REFRESHING TOKEN THE RESPONSE IS COMMITTED :" + response.isCommitted());
        tokenAuthenticationService.refreshAuthToken(refreshToken,response);
    }
}

在我要打印到控制台的那條線上,這始終是事實。 因此,即使在進入我的控制器之前,響應已經提交。 我如何獲得未提交的響應,因為我在refreshAuthToken方法中設置了一些標頭並在需要時返回錯誤。

正如下面的評論中提到的那樣,其中一個過濾器可能正在提交響應,但是我仍然不知道如何阻止過濾器執行該操作。

您可以嘗試以下方法嗎,但這適用於Spring Boot版本。

您應該使用ResponseEntity對象返回數據並使用createYourObject關鍵字,該關鍵字將包含要設置的對象。

@RestController
public class TokenRefreshController {
    @Autowired
    TokenAuthenticationService tokenAuthenticationService;

    @ApiOperation(value = "Generate new authentication token using a refresh token")
    @RequestMapping(value = "/token/refresh",
            method = RequestMethod.POST)
    public ResponseEntity<createYourObject> refreshToken(@RequestParam("refresh") String refreshToken, HttpServletResponse response) throws IOException {
        System.out.println("WHEN REFRESHING TOKEN THE RESPONSE IS COMMITTED :" + response.isCommitted());
        tokenAuthenticationService.refreshAuthToken(refreshToken,response);
        return new ResponseEntity<createYourObject>(yourObjectResponse,HttpStatus.CREATED);
    }
}

您可以更改RequestMapping網址並使用它刷新令牌

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM