2014-11-09 3 views
1

Я ничего не понимаю. Если, например, 5 пользователей регистрируются в вашем приложении, поэтому весенняя безопасность создает 5 разных контекстов? Весной меня мало смущает контекст.Весенний контекст безопасности, несколько пользователей

Все компоненты пружины Singleton (по умолчанию). Итак, если я создаю один компонент, и два разных аутентифицированных пользователя работают над этим компонентом, поэтому они работают над одними и теми же данными?

ответ

2

SecurityContext по умолчанию используется в локальной сети SecurityContextHolder. Это означает, что SecurityContext будет привязан к потоку.

Весной приложение MVC каждый запрос запускается в своей собственной нити. И Spring Security (SecurityContextPersistenceFilter в частности) заполняет SecurityContextHolderSecurityContext, найденным в сеансе HTTP (если он уже существует).

Таким образом, если в вашем приложении будет зарегистрировано пять пользователей, будет существовать пять контекстов безопасности, но только поток, принадлежащий пользователю, выполняющему запрос, будет доступен из потока, обрабатывающего запрос.

И для второй части вашего вопроса, да, несколько пользователей будут работать с одними и теми же экземплярами ваших бэнов с одним окошком. Но я не уверен, что это проблема. Ваши одноэлементные бобы могут быть услугами, DAO и т. Д., И вы, вероятно, не сохраняете состояние на тех, которые могут быть напрямую изменены пользователями.

Надеюсь, эта краткая и упрощенная статья объяснила это, если не оставить комментарий, и я добавлю дополнительные сведения.

Дополнительная информация:

+0

Эй, спасибо за ответ. Вы очень хорошо объяснили, и теперь я это понимаю! Если у меня есть область сеанса и пользовательский выход, поэтому контекст безопасности этого пользователя удаляется из держателя безопасности? Кстати, какой объем является моделью в MVC. – user3528733

+0

При выходе из системы Spring Security уничтожит SecurityContext и аннулирует связанный с ним сеанс HTTP. А что касается области Модели. Не уверен, что я это понимаю. Модель не является областью действия MVC. Это то, что используется для представления данных для представления. –

+0

Итак, если 5 пользователей находятся в contextholder, поэтому есть одна и та же модель? – user3528733

Смежные вопросы