我有一个登录页面,我希望每个人都可以访问login.jsp。例如,
<intercept-url pattern="/login.jsp" access="permitAll()" />
但我只想允许用户说ROLE_ADMIN。具有ROLE_USER的用户可能能够成功进行身份验证,但应将其重定向回login.jsp。实现这一目标的最佳方法是什么?
答案 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的用户将立即转发回登录页面。虽然这不是一个愉快的用户体验...