Отправьте пользовательский объект в качестве ответа вместе с кодом состояния 200 при успешном входе в систему без внутреннего перенаправления - PullRequest
0 голосов
/ 26 июня 2019

Я хочу вернуть пользовательский подробный объект (пользовательский объект) в качестве ответа клиенту после проверки подлинности пользователя. Я настроил customSuccessHandler для этого, но я не уверен, как отправить объект в ответ, не перенаправляя его из метода handle().

Изначально я перенаправил его на другой метод, помеченный @RequestMapping("/user"), но при этом состояние ответа было отправлено как 302 (перенаправление), что неприемлемо для клиентской стороны (угловой интерфейс). Другой вариант - попросить пользовательский интерфейс сделать еще один запрос ("/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.

1 Ответ

0 голосов
/ 26 июня 2019

Не совсем уверен, что это лучшая практика, но как вы можете сделать это в вашем handle(..)

response.getWriter().append("OK");

Вы также можете сделать это:

User user = getUserDetails();
ObjectMapper om = new ObjectMapper();
response.getWriter().append(om.writeValueAsString(user));

помня, что вы, конечно, должны использовать некоторые DTO для пользовательских данных, записанных в ответ, который не раскрывает пароль или любые другие конфиденциальные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...