Spring Security/Технический обзор Spring Security: различия между версиями

Перепутаны аутентификация с авторизацией.
(→‎Локализация: орфография, пунктуация)
(Перепутаны аутентификация с авторизацией.)
В приложение, которое получает конкурентные запросы в одной сессии, один и тот же экземпляр <code>SecurityContext</code> будет разделяться между потоками. Несмотря на то, что используется <code>ThreadLocal</code>, это будет один и тот же экземпляр, что извлекается из <code>HttpSession</code> для каждого потока. Это будет иметь значение если вы захотите временно изменить контекст в выполняющемся потоке. Если Вы просто используете <code>SecurityContextHolder.getContext().SetAuthentication(anAuthentication)</code>, то объект <code>Authentication</code> изменится во всех параллельных потоках, которые разделяют один и тот же экземпляр <code>SecurityContext</code>. Вы можете настроить поведение <code>SecurityContextPersistenceFilter</code> чтобы он создавал совершенно новый экземпляр <code>SecurityContext</code> для каждого запроса, чтобы один поток не влиял на другой. Альтернативный вариант, это создать новый экземпляр в том месте где требуется временно изменить контекст. Метод <code>SecurityContextHolder.createEmptyContext()</code> всегда возвращает новый экземпляр контекста.
 
= Управление доступом (АвторизацияАутентификация) в Spring Security =
В Spring Security основным интерфейсом, отвечающим за принятие решений в области контроля доступа, является <code>AccessDecisionManager</code>. У него имеется решающий метод, который принимает объект <code>Authentication</code>, представляющий принципала запрашивающего доступ, "объект безопасности" (см. ниже), а также список атрибутов метаданных безопасности, которые применяются к объекту (например, список ролей которым разрешен доступ).
 
Анонимный участник