2012-04-13 3 views
0

Использование формы для аутентификации. Мне нужно настроить URL-адрес отказа и URL-адрес успеха из таблицы базы данных, которую мы имеем для настройки других аспектов приложения.Динамическая конфигурация атрибутов входа в систему Spring Security

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

<form-login authentication-success-handler-ref="authenticationSuccessHandler" 
        always-use-default-target="true" 
        authentication-failure-url="**/failureurl.aspx**" 
        default-target-url="/home/configuration"/> 
<logout logout-success-url="**/successurl.aspx**" invalidate-session="true"/> 

Как я могу изменить эти атрибуты на лету?

ответ

1

Похоже, что у вас есть логическая обработка, которая определяет, где находится пользователь. Если бы я был вами, я бы связал ваши атрибуты, чтобы их перехватил другой контроллер, который обрабатывает запрос на основе ваших правил и перенаправления оттуда.

<form-login authentication-success-handler-ref="authenticationSuccessHandler" 
       always-use-default-target="true" 
       authentication-failure-url="/redirect/failure" 
       default-target-url="/home/configuration"/> 

И потом:

@Controller 
@RequestMapping("/redirect/failure") 
public class Redirector 
{ 
    public String doFailureRedirection(HttpServletRequest request, Model model) 
    { 
      //check where user is supposed to go and return 
    } 
} 
1

Я не думаю, что вы можете настроить их динамически - вы лучше укажете на методы контроллера, которые читают свойства базы данных, а затем перенаправляются на соответствующую страницу.

@RequestMapping(value = {"", "/", "/index"}, method = RequestMethod.GET) 
public ModelAndView redirectToHomepage(HttpServletRequest request) { 
    // If not logged in, then go to the landing page. 
    if (request.getUserPrincipal() == null) { 
     return new ModelAndView("redirect:/"); 
    } 

    if (request.isUserInRole("ROLE_ADMIN")) { 
     return new ModelAndView("redirect:/admin"); 
    } 
    return new ModelAndView("redirect:/dashboard"); 
} 
Смежные вопросы