Spring 4 Security + плитка - PullRequest
       21

Spring 4 Security + плитка

0 голосов
/ 11 сентября 2018

У меня есть 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;
}

Можно ли сделать что-то подобное? Спасибо

...