我有以下代码
@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);
}
}
在我打印到控制台的行上,它始终是正确的。因此,在进入我的 Controller 之前,响应就已经提交了。我怎样才能获得未提交的响应,因为我正在刷新AuthToken方法中设置一些 header 并在需要时返回错误。
正如下面的评论中提到的,其中一个过滤器可能正在提交响应,但我仍然不知道如何阻止过滤器这样做。
最佳答案
您可以尝试以下方法,但这适用于 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);
}
}
关于java - Spring @RestController 响应已提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53277370/