В чем разница между ROLE_USER и ROLE_ANONYMOUS в конфигурации URL-адреса перехвата Spring?
В чем разница между ROLE_USER и ROLE_ANONYMOUS в конфигурации URL-адреса перехвата Spring, такой как приведенный ниже пример?
<http auto-config="false" access-decision-manager-ref="accessDecisionManager"
use-expressions="true">
<intercept-url pattern="/admin/**" access="hasRole('ROLE_ANONYMOUS')"
requires-channel="http" />
<intercept-url pattern="/login/**" access="hasRole('ROLE_ANONYMOUS')"
requires-channel="${application.secureChannel}" />
<intercept-url pattern="/error/**" access="hasRole('ROLE_ANONYMOUS')"
requires-channel="http" />
<intercept-url pattern="/register/**" access="hasRole('ROLE_ANONYMOUS')"
requires-channel="${application.secureChannel}" />
<intercept-url pattern="/" access="hasRole('ROLE_ANONYMOUS')"
requires-channel="http" />
<intercept-url pattern="/**" access="hasRole('ROLE_USER')"
requires-channel="http" />
<form-login login-page="/login" login-processing-url="/login/submit"
authentication-failure-url="/login/error" />
<logout logout-url="/logout" />
</http>
2 ответа
ROLE_ANONYMOUS - это роль по умолчанию, назначаемая неаутентифицированному (анонимному) пользователю, когда в конфигурации используется фильтр "анонимной аутентификации" Spring Security. Это включено по умолчанию. Однако, вероятно, будет понятнее, если вместо этого вы используете выражение isAnonymous(), которое имеет то же значение.
ROLE_USER не имеет смысла, если вы не назначите эту роль своим пользователям, когда они проходят аутентификацию (вы отвечаете за загрузку ролей (полномочий) для аутентифицированного пользователя). Это не имя, которое встроено в инфраструктуру Spring Security. В данном примере, предположительно, эта роль назначена аутентифицированному пользователю.
ROLE_ANONYMOUS не имеет учетных данных пользователя, ROLE_USER имеет учетные данные пользователя... был аутентифицирован.
это моя интерпретация, основанная на предоставленной конфигурации