В чем разница между 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>

person pnut butter    schedule 08.08.2010    source источник


Ответы (2)


ROLE_ANONYMOUS — это роль по умолчанию, назначаемая пользователю, не прошедшему проверку подлинности (анонимному), когда в конфигурации используется фильтр "анонимной аутентификации". Это включено по умолчанию. Однако, вероятно, будет понятнее, если вместо этого использовать выражение isAnonymous(), имеющее тот же смысл.

ROLE_USER не имеет значения, если вы не назначите эту роль своим пользователям, когда они аутентифицированы (вы отвечаете за загрузку ролей (полномочий) для аутентифицированного пользователя). Это имя не встроено в инфраструктуру Spring Security. В данном примере предположительно эта роль назначена аутентифицированному пользователю.

person Shaun the Sheep    schedule 08.08.2010
comment
Я нашел это полезным: stackoverflow.com/questions/19525380/ - person smile; 06.08.2018

ROLE_ANONYMOUS не имеет учетных данных пользователя, ROLE_USER имеет учетные данные пользователя... прошел проверку подлинности.

это моя интерпретация, основанная на предоставленной конфигурации

person Aaron Saunders    schedule 08.08.2010