Как заставить Spring Security не обойти отображение входа в систему контроллера? - PullRequest
1 голос
/ 25 мая 2011

Если login.jsp отправляет /login/submit:

<form action="/login/submit" method="post">

и applicationContext.xml определяет элемент form-login:

<form-login login-page="/login" login-processing-url="/login/submit" authentication-failure-url="/login/error" />   

Как мне это сделатьнекоторая дополнительная обработка в соответствующем методе контроллера:

@RequestMapping(value = "/login/submit", method = RequestMethod.POST)

Я определил такой метод, но Spring Security никогда не вызывает его, когда login.jsp отправляет форму. Вместо этого он вызываетloadUserByUsername и успешно обрабатывает аутентификацию без использования этого метода контроллера.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

Вы можете решить эту проблему с помощью функции, называемой «целевой URL».Определите принудительный URL-адрес цели успеха по умолчанию - например, /login.submit.result.После успешного входа в систему он будет перенаправлен на тот конкретный URL, который вы можете отобразить и контролировать любым контроллером в контексте.Конечно, это отключит исходное намерение «целевой URL».Если вы планируете использовать это решение и вам нужно перенаправить на страницы после входа в систему, то вам нужно создать дополнительный слой «целевой URL» поверх существующего (на основе переменной или внутреннего параметра сеанса).

0 голосов
/ 10 июня 2011

Я согласен с @stevels и @ericacm. Требуется больше информации, чтобы сказать вам, какой вариант лучше всего подходит для того, чего вы пытаетесь достичь.

Метод контроллера никогда не вызывается, потому что, как вы, возможно, знаете, аутентификация формы входа в систему Spring безопасности происходит в фильтре: UsernamePasswordAuthenticationFilter . Когда форма успешно аутентифицируется этим фильтром, запрос перенаправляется на целевой URL. (Или к странице ошибки входа в систему, если аутентификация не удалась).

Скорее всего, вам захочется начать с этим фильтром, когда вы захотите изменить некоторые параметры поведения по умолчанию. Не бойтесь шагать по коду!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...