Редирект на существующие страницы от 403

160
07 июня 2018, 06:00

Вопросы сугубо, а так можно сделать, а как?
Подключенные спринги 3.1.2.RELEASE
Доступ ко всем страницам <intercept-url pattern="/**" access="hasRole('ROLE_USER')"/>
Пользователи:

<user name="1" password="1" authorities="ROLE_USER"/>
<user name="2" password="2" authorities="ROLE_USER, ROLE_LOCAL_ADMIN"/>
<user name="3" password="3" authorities="ROLE_USER, ROLE_LOCAL_ADMIN, ROLE_ADMIN"/>  

И контроллер:

@RequestMapping(value = "/second")
public ModelAndView indexPage(Principal user) {
    ModelAndView modelAndView = new ModelAndView("secondPage");
    modelAndView.addObject("methodMessage", testMsg.Message(user));
    return modelAndView;
}  

testMsg.Message(user) защищен @Secured(value = "ROLE_ADMIN")
Авторизуюсь как ROLE_USER, пытаюсь зайти на страницы где будет отработан защищенный метод и перенаправляюсь на страницу авторизации:

<error-page>
    <error-code>403</error-code>
    <location>/login</location>
</error-page>  

Можно ли эту ситуацию обработать как ни будь через контроллер?
Что бы я мог вывести сообщение на странице авторизации: "Вам нужно повысить права для доступа к ХХХХХХ странице". А потом, после авторизации редирект на ту страницу куда хотел попасть, ибо сейчас кидает на мой_сайт/.

UPD 1. Сообщения после редиректа на странице login можно делать с помощью RedirectAttributes. Осталось понять как прикрутить всё остальное.

Answer 1

В спринге есть AccessDeniedHandler, с помощью которого можете делать всё, что захотите:

@Component
public class CustomAccessDeniedHandler implements AccessDeniedHandler {
    @Override
    public void handle(HttpServletRequest request,
                   HttpServletResponse response,
                   AccessDeniedException e) throws IOException,
                                                   ServletException {
        //...some code
        // можете делать все, что захотите, например
        response.sendRedirect("/403");
        //...some code
}
READ ALSO
Как вывести данные ИЗ ObservableList в таблицу Mysql.Java

Как вывести данные ИЗ ObservableList в таблицу Mysql.Java

Как вывести данные ИЗ ObservableList в таблицу MysqlJava

163
Что с календарем? [дубликат]

Что с календарем? [дубликат]

На данный вопрос уже ответили:

132
как перевести данные из input в google

как перевести данные из input в google

есть <input type="search"> и <input type="button>При нажатии на button

218