-1

我已经如下配置了弹簧身份验证,但它没有按预期工作

<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(即使在关闭broser甚至在服务器重新启动时)而不是重定向到 login.jsp 。谁能告诉我我到底错过了什么?

感谢和问候维杰

4

2 回答 2

1

您的模式和 URL 不一致。登录页面有“/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>

特定请求的调试日志将准确解释为什么它是安全的或不安全的。

于 2013-01-10T14:31:16.670 回答
0

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

于 2013-01-10T14:33:23.823 回答