Вопросы сугубо, а так можно сделать, а как?
Подключенные спринги 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
. Осталось понять как прикрутить всё остальное.
В спринге есть 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
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как вывести данные ИЗ ObservableList в таблицу MysqlJava
есть <input type="search"> и <input type="button>При нажатии на button