[英]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.