如何配置Spring Security以便可以为未经身份验证和经过身份验证的用户访问某些资源?在用户通过身份验证的情况下,必须能够在资源处理方法中获取身份验证上下文。
不得使用匿名身份验证,因为我们必须区分未经身份验证(401 Unauthorized(不幸的HTTP命名))和未授权(403 Forbidden)其他资源。
如果我们将资源添加到web.ignoring()
,则即使对于经过身份验证的用户,也无法使用身份验证上下文。
如果资源不在web.ignoring()
中,那么对于未经身份验证的用户,Spring将返回HTTP 401。
答案 0 :(得分:0)
<http use-expressions="true">
<intercept-url pattern="/app/**" access="hasAnyRole('ROLE_ADMIN','ROLE_USER','ROLE_CUST_ADMIN')" />
<intercept-url pattern="/app2/**" access="hasRole('ROLE_ADMIN')" />
</http>
如果添加permitAll,它将允许用户查看资源...
<http use-expressions="true">
<intercept-url pattern="/app/**" access="permitAll" />
</http>
答案 1 :(得分:0)
我可能已经发现了问题,可能会进行无谓的身份验证。问题似乎在于我们的自定义ExceptionTranslationFilter
响应403而不是匿名的401。抱歉无效的问题。