Spring Security:允许对安全资源进行未经身份验证的访问

时间:2015-04-23 14:29:01

标签: java spring spring-mvc authentication spring-security

如何配置Spring Security以便可以为未经身份验证和经过身份验证的用户访问某些资源?在用户通过身份验证的情况下,必须能够在资源处理方法中获取身份验证上下文。

不得使用匿名身份验证,因为我们必须区分未经身份验证(401 Unauthorized(不幸的HTTP命名))和未授权(403 Forbidden)其他资源。

如果我们将资源添加到web.ignoring(),则即使对于经过身份验证的用户,也无法使用身份验证上下文。

如果资源不在web.ignoring()中,那么对于未经身份验证的用户,Spring将返回HTTP 401。

2 个答案:

答案 0 :(得分:0)

在你的spring安全配置文件中,你应该有这样的东西或类似的......

<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。抱歉无效的问题。