-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にアクセスできるようになります(後でさえ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 に答える