我在spring-security.xml中有这个配置:
<http
create-session="stateless"
realm="Protected API"
auto-config="true"
use-expressions="true">
<intercept-url pattern="/**" access="permitAll" />
<intercept-url pattern="/api/auth/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<intercept-url pattern="/api/auth/admin/**" access="hasRole('ROLE_ADMIN')" />
<http-basic/>
</http>
因此任何用户都可以访问 / api / mypublicservice1 。注册用户可以访问 / api / auth / userservice2 。只有管理员才能访问 / api / auth / admin / adminservice3 。那是有效的。
但我想要一种更好的方法来处理404限制文件夹中的请求。
例如:
当未授权用户尝试将不存在的页面访问到受限文件夹时,如何返回正确的身份验证代码(401/403)?定制过滤器? HandlerExceptionResolver?
答案 0 :(得分:0)
正如Luke Taylor所指出的,我的拦截网址顺序错误:
<http
create-session="stateless"
realm="Protected API"
use-expressions="true">
<intercept-url pattern="/api/auth/admin/**" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/api/auth/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')" />
<intercept-url pattern="/**" access="permitAll" />
<http-basic/>
</http>