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

Содержимое удалено Содержимое добавлено
→‎Сервис UserDetails: исправлена неправильная формулировка
Строка 217:
 
=== Что такое конфигурационные атрибуты ===
"Конфигурационный атрибут" можно рассматривать как <code>String</code>, которая имеет особое значение для классов, используемых <code>AbstractSecurityInterceptor</code>. Они представляются интерфейсом <code>ConfigAttribute</code> каркаса Spring Security. Они могут быть простыми именами ролей или иметь более сложный смысл, в зависимости от возможностей реализации <code>AccessDecisionManager</code>. <code>AbstractSecurityInterceptor</code> настроен так, чтобы использовать <code>SecurityMetadataSource</code>, который он использует для поиска атрибутов защищенного объекта. Обычно эта конфигурация будет скрыта от пользователя. Конфигурационные атрибуты устанавливаются в виде аннотаций для защищенных методов или атрибутов доступа для защищенных URL. Например, когда мы видим что-то вроде <code><intercept-url pattern='/secure/**' access='ROLE_A,ROLE_B'/></code> в конфигурационном файле, это говорит о том, что конфигурационные атрибуты <code>ROLE_A</code> и <code>ROLE_B</code> должны применяться к веб-запросам, соответствующим заданному шаблону. На практике, с конфигурацией по умолчанию для <code>AccessDecisionManager</code>, это будет означает, что доступ получит каждый, кто имеет <code>GrantedAuthority</code> совпдающийсовпадающий с одним из этих двух атрибутов. Строго говоря, они просто атрибуты и их интерпретация зависит от реализации <code>AccessDecisionManager</code>. Префикс <code>ROLE_</code> используется как маркер, что бы показать что эти атрибуты обозначают роли пользователей и будут использованы классом <code>RoleVoter</code> каркаса Spring Security. Это имеет смысл только тогда, когда используется <code>AccessDecisionManager</code> основанный на voter. В следующей главе мы увидим как реализован <code>AccessDecisionManager</code>.
 
=== RunAsManager ===