1

authc フィルターを使用するように URL を構成する方法を示す例はたくさんありますが、適切な単純なログイン ページの例は見つかりません。私は Shiro への Spring 統合を使用していますが、私の問題とは関係がないと思います。

ドキュメントを読んで、次のようにフィルター ファクトリをセットアップしました。

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="loginUrl" value="/login.jsp" />
        <property name="successUrl" value="/Reports.jsp" />
        <property name="securityManager" ref="securityManager" />
        <property name="filterChainDefinitionMap">
                <map>
                        <entry key="/ws/**" value="authc" />
                        <entry key="/Reports.jsp" value="authc" />
                        <entry key="/**" value="anon" />
                </map>
        </property>
</bean>

xml ファイル全体は割愛します。これを行うと、次のようになるため、適切なフィルターが選択されていることがわかります。

> curl -v localhost:8080/factorlab-web/Reports.jsp

私はこの応答を受け取ります:

< HTTP/1.1 302 Found
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Set-Cookie: JSESSIONID=19gdgnmukynb3;Path=/factorlab-web
< Location: http://localhost:8080/factorlab-web/login.jsp;jsessionid=19gdgnmukynb3
< Content-Length: 0
< Server: Jetty(6.1.21)
<

これまでのところ、とても良いですよね?ただし、ユーザー名とパスワードを送信すると、Reports.jsp のコンテンツを取得する必要がありますよね? 私はしません。これを行うと: * curl -v -d "username=demo&password=demo&rememberMe=false" http://localhost:8080/factorlab-web/Reports.jsp

以前と同じ応答が得られます。

< HTTP/1.1 302 Found
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Set-Cookie: JSESSIONID=qnidg37bqo9f;Path=/factorlab-web
< Location: http://localhost:8080/factorlab-web/login.jsp;jsessionid=qnidg37bqo9f
< Content-Length: 0
< Server: Jetty(6.1.21)
<

明らかに、構成について、またはそれがどのように機能するかについて、私は混乱しています。最初に、2 番目の curl コマンドから何が期待できるか、または期待どおりに表示されない理由を誰か教えてもらえますか?

2 番目に、login.jsp (または同様のもの) を使用した小さなサンプルがあり、ユーザーが次の場合に何が起こるかを確認できます: * 明示的にログイン ページに移動する * 自動的にログイン ページに誘導される元の試みられたページ)。* ログイン ページから間違ったユーザー名とパスワードを送信します。

4

1 に答える 1

2

これが私の混乱でした: loginUrl 以外に資格情報を送信しないでください。したがって、私の場合、login.jsp のフォーム ポストで別のエンドポイントを指定するべきではありません。上記の例では、

curl -v -d "username=demo&password=demo&rememberMe=false" http://localhost:8080/factorlab-web/Reports.jsp

テストするべきだった

curl -v -d "username=demo&password=demo&rememberMe=false" http://localhost:8080/factorlab-web/login.jsp

戻ります:

< HTTP/1.1 302 Found
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Set-Cookie: JSESSIONID=1bug6rem2iecb;Path=/factorlab
< Set-Cookie: rememberMe=deleteMe; Path=/factorlab; Expires=Mon, 16-May-2011 00:32:27 GMT
< Location: http://localhost:8080/factorlab/Reports.jsp;jsessionid=1bug6rem2iecb
< Content-Length: 0
< Server: Jetty(6.1.21)
< 
于 2011-05-17T00:35:58.700 に答える