一旦用户通过身份验证,我想返回用户详细信息对象(自定义对象)作为对客户端的响应。我为此配置了customSuccessHandler
,但是我不确定如何在不从handle()
方法重定向的情况下发送对象作为响应。
最初,我将其重定向到另一个用@RequestMapping("/user")
注释的方法,但这将响应状态发送为302(重定向),这是客户端(角度UI)不可接受的。我要解决的其他选择是询问Ui再次请求("/user"
)并获取所需的详细信息,但这将导致客户不必要的额外负担,造成额外的休息时间。有没有更好的方法来实现这一目标?
我在handle()
中的CustomSuccessHandler
方法
@Override
protected void handle(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException {
HttpSession session = request.getSession(true);
Users user = getUserDetails(); //this gets the user details
session.setAttribute("user",user);
response.getWriter().append("OK");
response.setStatus(200);
}
我要实现的功能是在成功登录用户后,我的后端代码应以状态代码200
答复,并且还提供用户详细信息,而无需任何额外的REST调用。
答案 0 :(得分:0)
不太确定这是否是最佳做法,但是可以在handle(..)
response.getWriter().append("OK");
您也可以这样做:
User user = getUserDetails();
ObjectMapper om = new ObjectMapper();
response.getWriter().append(om.writeValueAsString(user));
请记住,您当然应该使用一些DTO来存储写给响应的用户详细信息,而这些信息不会暴露密码或任何其他敏感数据。