В моем приложении MVC весной я хочу получить доступ к объекту , созданному весной безопасности в моем сервисе. Я думал о том, чтобы вводить его в классы обслуживания, но я уверен, что он не будет потокобезопасным. Другой вариант Я думаю, это передать его всем методам обслуживания в качестве аргумента, но это не выглядит очень чистым для меня. Что было бы лучшим способом сделать это?Получить главный пользовательский объект в методах обслуживания
ответ
Я думаю, что наилучшим подходом было бы использовать SecurityContextHolder
.
Principal principal = SecurityContextHolder.getContext().getAuthentication();
Spring объясняет, как это работает в documentation:
Наиболее фундаментальный объект SecurityContextHolder. Здесь хранит данные настоящего контекста безопасности приложения, , который содержит сведения об основном пользователе, использующем в настоящее время приложение . По умолчанию SecurityContextHolder использует ThreadLocal для хранения этих данных, что означает, что контекст безопасности равен , всегда доступным для методов в том же потоке выполнения, даже если контекст безопасности явно не передается в качестве аргумента этих методов , Использование ThreadLocal таким образом вполне безопасно, если убрать , чтобы очистить поток после запроса . Конечно, Spring Security позаботится об этом для вас автоматически, поэтому нет необходимости беспокоиться об этом.
Поскольку для хранения текущей проверки подлинности используется ThreadLocal
, у вас не будет проблемы с потоковой безопасностью.
- 1. Улавливание ошибок канала в методах обслуживания?
- 2. Объект «главный» в Рубине
- 3. Пользовательский ввод, хранящийся в методах
- 4. Пользовательский маршрутизатор для обслуживания
- 5. Quickblox получить случайный пользовательский объект
- 6. Как использовать объект в двух разных методах
- 7. MVC controller: Обычный объект в методах
- 8. Пользовательский объект в .NET
- 9. Does NSURLConnection Заблокировать главный/пользовательский интерфейс
- 10. Выполнение потока зависает главный пользовательский интерфейс
- 11. Объект класса класса для обслуживания
- 12. Дублированный пользовательский объект в NSSet
- 13. C# - Получить пользовательский объект класса из списка
- 14. Salesforce PHP SOAP API получить пользовательский объект
- 15. Получить аутентифицированный пользовательский объект Spring MVC
- 16. Получить пользовательский объект по полю пользователя
- 17. Получить пользовательский объект WCF с Json
- 18. Как получить объект Display из моего класса обслуживания?
- 19. Получить пользователя в категории обслуживания
- 20. Как передать объект обслуживания в MyActivity?
- 21. Как получить объект Jquery его пользовательский атрибут
- 22. Как получить текущий пользовательский объект CustomUser
- 23. Параметры в методах RMI
- 24. Получить главный порт Имя псевдотерминала
- 25. Главный главный вызов
- 26. Получить сессию внешнего класса обслуживания в GWT
- 27. Ссылка на главный NSWindow в AppDelegate (OSX)
- 28. Не удается обновить пользовательский интерфейс в методах делегатов NSURLSession
- 29. Сохранить пользовательский объект в NSUserDefault
- 30. Невозможно получить Meteor.setInterval для работы в методах