У меня есть Spring 4 + Tiles WebApp, и теперь я хотел бы реализовать безопасность Spring.
Когда я запускаю веб-приложение, первая отображаемая страница является страницей входа. Конфигурация тайлов для этой страницы:
<definition name="home" template="/WEB-INF/views/pages/index.jsp"></definition>
Я бы хотел создать пользовательскую форму для входа, но я не знаю, какую ссылку вставить в тег form-login внутри конфигурации ниже:
<http auto-config="true" >
<intercept-url pattern="/" access="permitAll" />
<intercept-url pattern="/home" access="permitAll" />
<intercept-url pattern="/admin**" access="hasRole('ADMIN')" />
<intercept-url pattern="/dba**" access="hasRole('ADMIN') and hasRole('DBA')" />
<form-login login-page="/?" username-parameter="ssoId" password-parameter="password" authentication-failure-url="/Access_Denied" />
<csrf/>
</http>
Может быть, я могу перехватить первую страницу, запущенную с контроллера, а затем вернуть правильное представление? Примерно так (это контроллер другого проекта, где вы получаете доступ к странице входа с помощью кнопки, которая вызывает над контроллером):
@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView login(@RequestParam(value = "error", required = false) String error, @RequestParam(value = "logout", required = false) String logout) {
ModelAndView model = new ModelAndView();
if (error != null) {
model.addObject("msg", Msg.LoginStatus.LOGIN_ERROR);
model.setViewName("/login/login");
return model;
}
if (logout != null) {
model.setViewName("/login/login");
model.setViewName("/home/home");
return model;
}
model.setViewName("/login/login");
return model;
}
Можно ли сделать что-то подобное? Спасибо