Qual é a diferença entre Role_user e Role_anonymous em uma configuração de URL de interceptação da primavera?
-
26-09-2019 - |
Pergunta
Qual é a diferença entre Role_User e Role_anonymous em uma configuração de URL de interceptação de primavera, como o exemplo abaixo?
<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>
Solução
Role_anonymous é a função padrão atribuída a um usuário não autenticado (anônimo) quando uma configuração usa a Spring Security's filtro "autenticação anônima" . Isso é ativado por padrão. No entanto, provavelmente é mais claro se você usar a expressão isanonymous () Em vez disso, que tem o mesmo significado.
O Role_User não tem significado, a menos que você atribua essa função aos seus usuários quando eles são autenticados (você é responsável por carregar as funções (autoridades) para um usuário autenticado). Não é um nome incorporado à infraestrutura da Spring Security. No exemplo dado, presumivelmente essa função é atribuída a um usuário autenticado.
Outras dicas
Role_anonymous não possui credenciais de usuário, o Role_User possui credenciais de usuário ... foi autenticado.
Esta é minha interpretação com base na configuração fornecida