如何在ResponseEntity方法中以HTML形式获取返回类型

xzlaal3s  于 2022-10-04  发布在  Spring
关注(0)|答案(1)|浏览(213)

我有这个控制器:

@PostMapping("/login")
@Transactional
public ResponseEntity<?> login(@Valid @ModelAttribute("login") LoginDTO dto, Model model) {
    Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(dto.getUsername(), dto.getPassword()));
    SecurityContextHolder.getContext().setAuthentication(authentication);
    User user = (User) authentication.getPrincipal();

    RefreshToken refreshToken = new RefreshToken();
    refreshToken.setOwner(user);
    refreshTokenRepository.save(refreshToken);

    model.addAttribute("login", dto);

    String accessToken = jwtHelper.generateAccessToken(user);
    String refreshTokenString = jwtHelper.generateRefreshToken(user, refreshToken);

    return ResponseEntity.ok(new TokenDTO(user.getId(), accessToken, refreshTokenString));

}

如您所见,这里有ResponseEntity,我不能将html设置为返回类型。我试图将返回类型更改为String,然后返回index.html,但我的安全性无法正常工作。谁已经有这种情况了,为什么我可以在这里返回html页面?所以这只是login控制器,在用户提交后,如果成功,我想将他重定向到另一个页面。

czfnxgou

czfnxgou1#

我认为你应该直接发送重定向响应来重定向它。

HttpHeaders headers = new HttpHeaders();
headers.add("Location", "/dashboard");    
return new ResponseEntity<String>(headers,HttpStatus.FOUND);

相关问题