我有一个登录页面,我想允许每个人访问 login.jsp。例如,
<intercept-url pattern="/login.jsp" access="permitAll()" />
但我只想允许使用 ROLE_ADMIN 访问用户。具有 ROLE_USER 的用户可能能够成功进行身份验证,但他们应该被重定向回 login.jsp。实现这一目标的最佳方法是什么?
将登录页面设置为access-denied-page
打开<http>
,并正确保护 URL 应该会产生预期的效果。
<security:http use-expressions="true" access-denied-page="/login">
<security:form-login
login-page="/login"
default-target-url="/page/for/admins"
authentication-failure-url="/login?error=true"/>
<security:intercept-url pattern="/login.jsp" access="permitAll()" />
<security:intercept-url pattern="/page/for/admins" access="hasRole('ROLE_ADMIN')"/>
</security:http>
具有 ROLE_USER 的用户将在登录后立即被转发回登录页面。虽然这不是一个愉快的用户体验......