SecurityContext
по умолчанию используется в локальной сети SecurityContextHolder
. Это означает, что SecurityContext
будет привязан к потоку.
Весной приложение MVC каждый запрос запускается в своей собственной нити. И Spring Security (SecurityContextPersistenceFilter
в частности) заполняет SecurityContextHolder
SecurityContext
, найденным в сеансе HTTP (если он уже существует).
Таким образом, если в вашем приложении будет зарегистрировано пять пользователей, будет существовать пять контекстов безопасности, но только поток, принадлежащий пользователю, выполняющему запрос, будет доступен из потока, обрабатывающего запрос.
И для второй части вашего вопроса, да, несколько пользователей будут работать с одними и теми же экземплярами ваших бэнов с одним окошком. Но я не уверен, что это проблема. Ваши одноэлементные бобы могут быть услугами, DAO и т. Д., И вы, вероятно, не сохраняете состояние на тех, которые могут быть напрямую изменены пользователями.
Надеюсь, эта краткая и упрощенная статья объяснила это, если не оставить комментарий, и я добавлю дополнительные сведения.
Дополнительная информация:
Эй, спасибо за ответ. Вы очень хорошо объяснили, и теперь я это понимаю! Если у меня есть область сеанса и пользовательский выход, поэтому контекст безопасности этого пользователя удаляется из держателя безопасности? Кстати, какой объем является моделью в MVC. – user3528733
При выходе из системы Spring Security уничтожит SecurityContext и аннулирует связанный с ним сеанс HTTP. А что касается области Модели. Не уверен, что я это понимаю. Модель не является областью действия MVC. Это то, что используется для представления данных для представления. –
Итак, если 5 пользователей находятся в contextholder, поэтому есть одна и та же модель? – user3528733