Spring安全身份验证在我的配置中无法正常工作

时间:2013-01-10 14:08:07

标签: spring-mvc spring-security

我已按照以下方式配置了弹出身份验证,但未按预期工作

<sec:http auto-config="true">
    <!-- Restrict URLs based on role -->
    <sec:intercept-url pattern="pages/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />

    <sec:intercept-url pattern="/css/style.css" access="IS_AUTHENTICATED_ANONYMOUSLY" />
     <sec:intercept-url pattern="pages/**" access="ROLE_USER" />

    <!-- Override default login and logout pages -->
    <sec:form-login login-page="/login.jsp" 
                         default-target-url="/pages/products.xhtml" 
                         authentication-failure-url="/login.html?login_error=1" />
    <sec:logout logout-url="/logout" logout-success-url="/login.jsp" />
</sec:http>

在服务器启动时我已经被重定向到login.jsp,如果我使用登录表单我被重定向到products.xhtml到目前为止很好但是如果我直接访问products.xhtml,它只是允许我访问product.xhtml (即使在关闭更明亮或甚至在服务器重启后),而不是重定向到login.jsp。任何人都可以告诉我我到底错过了什么吗?

谢谢&amp;问候 维杰

2 个答案:

答案 0 :(得分:1)

您的模式和网址不一致。您有登录页面的“/login.jsp”和intercept-url模式的“pages / login.jsp”。

尝试使用:

<http pattern="/css/**" security="none">

<http>
    <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/**" access="ROLE_USER" />
    <form-login login-page="/login.jsp" 
                     default-target-url="/pages/products.xhtml" 
                     authentication-failure-url="/login.html?login_error=1" />
    <logout logout-url="/logout" logout-success-url="/login.jsp" />
</http>

特定请求的调试日志将准确解释它为何受到保护。

答案 1 :(得分:0)

确保您没有Cookie或有效会话...