我有以下 Spring Security 设置,默认全部拒绝(参见下面的示例)。我不想更改默认的deny all,因为它是安全配置的防御方式,也被认为是一种好的做法。显然,如果用户想要访问一些不存在的页面,他会得到 403,因为默认拒绝所有策略。当页面不存在时我想要结果 404,当用户访问受限时我想要 403。有没有办法为此行为配置 Spring Security?
例子 :
<intercept-url pattern="/posts/remove" access="hasRole('ADMIN')" />
<intercept-url pattern="/posts/add" access="hasRole('EDITOR')" />
<intercept-url pattern="/posts" access="permitAll" />
<intercept-url pattern="/" access="permitAll" />
<!-- Default is access denied -->
<intercept-url pattern="/**" access="denyAll" />
</http>
当用户请求时/something-that-not-exists
,他应该得到 404(不是 403)。当 EDITOR 用户请求时/posts/remove
,他应该得到 403。