2

組み込みの Jetty 6.1.7 プロジェクト内でフォームベースの認証を使用しようとしています。

そのため、認証を機能させるには、同じコンテキストでサーブレットと html (login.html) を提供する必要があります。異なるコンテキストには異なるロールが必要なため、ホールアプリケーションを保護したくありません。jetty javadoc は、ContextHandlerCollection が 1 つのコンテキストに対して異なるハンドラーを処理できると述べていますが、私はそれを機能させません。認証を無視したサンプルが機能しないのはなぜですか?

ContextHandlerCollection contexts = new ContextHandlerCollection();

// serve html       
Context ctxADocs= new Context(contexts,"/ctxA",Context.SESSIONS);
ctxADocs.setResourceBase("d:\\tmp\\ctxA");
ServletHolder ctxADocHolder= new ServletHolder();
ctxADocHolder.setInitParameter("dirAllowed", "false");    
ctxADocHolder.setServlet(new DefaultServlet());
ctxADocs.addServlet(ctxADocHolder, "/");   

// serve a sample servlet
Context ctxA = new Context(contexts,"/ctxA",Context.SESSIONS);  

ctxA.addServlet(new ServletHolder(new SessionDump()), "/sda");
ctxA.addServlet(new ServletHolder(new DefaultServlet()), "/");

contexts.setHandlers(new Handler[]{ctxA, ctxADocs});

// end of snippet

役に立つ考えは大歓迎です!

ありがとう。

大神

4

2 に答える 2

3

最後に、解決策は最新のjetty 6.1.12 rc2を使用することです。私は彼らが何を変更したかをチェックしませんでした-私はそれが今うまくいくことをうれしく思います.

于 2008-09-22T11:30:48.087 に答える
1

Web アプリケーション記述子を使用します。

これを web.xml に貼り付けます。

<login-config>
    <auth-method>BASIC</auth-method>
</login-config>
<security-role>
    <role-name>MySiteRole</role-name>
</security-role>

<security-constraint>
    <display-name>ProtectEverything</display-name>
    <web-resource-collection>
        <web-resource-name>ProtectEverything</web-resource-name>
        <url-pattern>*.*</url-pattern>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>MySiteRole</role-name>
    </auth-constraint>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>ExcludeLoginPage</web-resource-name>
        <url-pattern>/login.html</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

認証がないと、login.html 以外のすべてが非表示になります。

于 2008-09-18T09:02:56.563 に答える