0

我有一个登录页面,我想允许每个人访问 login.jsp。例如,

<intercept-url pattern="/login.jsp" access="permitAll()" />

但我只想允许使用 ROLE_ADMIN 访问用户。具有 ROLE_USER 的用户可能能够成功进行身份验证,但他们应该被重定向回 l​​ogin.jsp。实现这一目标的最佳方法是什么?

4

1 回答 1

0

将登录页面设置为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 的用户将在登录后立即被转发回登录页面。虽然这不是一个愉快的用户体验......

于 2013-04-18T21:02:44.213 回答