весенние страницы входа в систему безопасности? - PullRequest
0 голосов
/ 04 февраля 2010

У меня есть некоторая путаница с тем, как работает Spring Security:

В моем приложении мне нужна страница входа для пользователей, после чего они перенаправляются обратно на страницу, откуда они пришли.Я просмотрел несколько весенних руководств по безопасности и прочитал несколько статей, и примеры работают с помощью защиты определенной страницы на сайте (управляемой тегом <intercept url ..>).Затем Spring security сгенерирует страницу входа (или вы можете указать свою) для доступа к защищенной странице.

Я в замешательстве, потому что не хочу защищать определенную страницу на моем сайте: Iхотите, чтобы пользователи могли войти на страницу входа, после чего они получают доступ к расширенным функциям сайта (с помощью функций авторизации Spring Security).Мой вопрос: учитывая то, что я описал, какова будет стратегия создания этой страницы входа в систему, которая после входа в систему предоставит зарегистрированному пользователю соответствующие права доступа?простая JSP-страница, единственная функция которой - перенаправить обратно на предыдущую страницу.Тогда я бы использовал Spring Security для защиты этой страницы JSP.Но похоже, что должен быть лучший способ сделать это ...

Спасибо

Ответы [ 3 ]

2 голосов
/ 04 февраля 2010

Когда пользователь еще не вошел в систему, вы можете рассматривать его как ANONYMOUS. Таким образом, на странице будет скрыто все, помеченное <sec:authorize ifAllGranted="ROLE_SUPERVISOR">.
Подробнее см. Анонимная аутентификация .

1 голос
/ 12 июня 2010

Я не знаю, нужен ли вам ответ, поскольку ваш вопрос был в фев., Но как только пользователь вошел в систему через SS, вы можете получить объект SS Authentication в вашем контроллере как:

SecurityContextHolder.getContext().getAuthentication();

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

т.е.чтобы выйти из системы, просто лишите законной силы сеанс

session.invalidate();

Я также делаю трюк с SS.Так как SS автоматически обеспечивает вход в форму при доступе к защищенной области (тот же рабочий процесс, что и в j_security_check), вы можете определить имя входа для указания на страницу, которая не существует в защищенной области:

<a href="my_secured_realm/non_existant_page">click here to sign in</a>

SS будетзатем запустите страницу входа.Затем, какую бы платформу вы не использовали, вы можете перехватить ее после входа в систему, чтобы получить объект аутентификации.

Надеюсь, это поможет.

0 голосов
/ 04 февраля 2010

Вы должны установить always-use-default-target="false", чтобы Spring Security автоматически перенаправлял на предыдущую страницу, если для него установлено значение true, оно всегда будет переходить на домашнюю страницу по умолчанию.Свойство находится на теге form-login.

...