【发布时间】:2015-06-05 22:54:19
【问题描述】:
我的spring安全配置是
<http pattern="/resources/**" security="none"/>
<http pattern="/login**" security="none"/>
<http pattern="/invalidsession**" security="none"/>
<http pattern="/forgotpassword**" security="none"/>
<http pattern="/accessdenied**" security="none"/>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/common/**" access="hasAnyRole('SITE_ADMIN','CLIENT_ADMIN')" />
<intercept-url pattern="/site/**" access="hasRole('SITE_ADMIN')" />
<intercept-url pattern="/**" access="hasRole('CLIENT_ADMIN')" />
<!-- access denied page
<access-denied-handler error-page="/accessdenied" />
-->
<access-denied-handler ref="my403" />
<form-login login-page="/login"
username-parameter="username"
password-parameter="password" authentication-failure-url="/login?error"
authentication-success-handler-ref="myAuthenticationSuccessHandler"
/>
<logout logout-success-url="/login?logout" />
<session-management invalid-session-url="/invalidsession" />
</http>
当 SITE_ADMIN 用户打开一个不存在的页面时,它会显示拒绝访问页面而不是 404 页面。这样做是因为 <intercept-url pattern="/**" access="hasRole('CLIENT_ADMIN')" />。 Spring 安全性在 pagenotfound 之前检查授权。如果页面不存在并且 SITE_ADMIN 当前正在记录,我如何显示 404。
【问题讨论】:
标签: java spring spring-mvc spring-security