Spring インターセプト URL 設定における ROLE_USER と ROLE_ANONYMOUS の違いは何ですか?
-
26-09-2019 - |
質問
以下の例のような Spring インターセプト URL 構成における ROLE_USER と ROLE_ANONYMOUS の違いは何ですか?
<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>
解決
ROLE_ANONYMOUS は、構成で Spring Security を使用する場合に、認証されていない (匿名) ユーザーに割り当てられるデフォルトのロールです。 「匿名認証」フィルター . 。これはデフォルトで有効になっています。ただし、次の表現を使用すると、おそらくより明確になります。 isAnonymous() 代わりに、同じ意味を持ちます。
ROLE_USER は、ユーザーの認証時にこのロールをユーザーに割り当てない限り意味がありません (認証されたユーザーのロール (権限) をロードするのはあなたが担当します)。これは Spring Security のインフラストラクチャに組み込まれている名前ではありません。与えられた例では、おそらくその役割は認証されたユーザーに割り当てられています。
他のヒント
ROLE_ANONYMOUSは一切ユーザーの資格情報を持っていない、ROLE_USERは、ユーザーの資格情報を持っている...認証されています。
これは
提供された構成に基づいて、私の解釈であります所属していません StackOverflow