Spring security: как сохранить каждый анонимный пользователь? - PullRequest
2 голосов
/ 08 февраля 2012
  1. Что мне нужно:

Для каждого нового пользователя, посещающего мой сайт, я создаю объект MyUser (не имеет значения, из чего состоит этот класс) и сохраняю его в БД.

И я хочу, чтобы этот объект использовался каждый раз, когда пользователь с одинаковым sessionId заходил на мой сайт.

Для меня это выглядит почти как анонимная аутентификация. Поэтому я отключил его и заменил собственным фильтром:

<http auto-config="true">
    ...
    <anonymous enabled="false"/>        
    <custom-filter ref="userGeneratorFilter" position="ANONYMOUS_FILTER"/>
</http>

Я думал, что securityContext содержит принципал для ранее аутентифицированного пользователя, но похоже, что один из фильтров в цепочке фильтров добавляет его вручную для каждого запроса.

Другими словами, каждый раз, когда я захожу в свой UserGeneratorFilter.doFilter

SecurityContextHolder.getContext().getAuthentication() == null;

Так как я могу понять, нужно ли мне создать новый объект MyUser или взять существующий из базы данных?

пс. Я думаю, что выбрал неправильный путь = (Несколько слов о моей задаче: я хочу, чтобы неавторизованный пользователь имел ограниченный доступ к моему ресурсу, но когда он регистрируется, я хочу, чтобы все введенные им данные, будучи неавторизованными, были объединены с его обычным счет.

Спасибо за ваше внимание. Каждый раз, когда я пишу это предложение, модераторы удаляют его. Но я никогда не перестану писать это =)

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

Просто установите файл cookie, срок действия которого не истекает, например, CookieID или VisitorID, который идентифицирует пользователя. проверяйте этот cookie, когда люди посещают ваш сайт, он должен идентифицировать пользователя.

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

В весенней безопасности есть опций , которые сообщают, как безопасность должна обрабатывать перенос сеанса, может быть, это было бы полезно для вас.

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