仅允许具有某些角色的用户使用Spring Security登录

时间:2013-04-18 20:51:07

标签: spring security login roles authorize

我有一个登录页面,我希望每个人都可以访问login.jsp。例如,

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

但我只想允许用户说ROLE_ADMIN。具有ROLE_USER的用户可能能够成功进行身份验证,但应将其重定向回login.jsp。实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

access-denied-page <http>设置为登录页面,并正确保护网址应具有所需的效果。

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