Мой контроллер Spring является общедоступной картой @ResponseBody, но я также хочу обрабатывать перенаправления

#java #spring #spring-boot #spring-mvc

Вопрос:

Я вызываю метод из Ajax и отвечаю

@ResponseBody Map<String, String>

Моя функциональность в порядке! Но моя проблема заключается в том, что пользователь не вошел в систему и вызывает этот метод непосредственно по URL-адресу. В этом случае я не хочу, чтобы мой контроллер отвечал

@ResponseBody Map<String, String>

Я хочу, чтобы мой контроллер ответил перенаправлением на страницу входа в систему.

Я использую

public ModelAndView

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

Комментарии:

1. Вы используете систему безопасности или используете свои собственные обработчики?

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

3. Использование spring security сделает большую часть работы автоматически.

4. Я могу перенаправлять клиентов, если они не вошли в систему до обработки моего @ResponseBody Map<String, String> метода с помощью Spring Security?

5. Взгляните на это: spring.io/guides/gs/securing-web

Ответ №1:

Как все уже упоминали , Spring security is essential for this functionality . Но если это быстрое решение, вы можете проверить Spring boot AOP

Вы перехватываете вызов контроллера до того , как он обработает запрос, выполняете аутентификацию и соответствующим образом изменяете выходные данные