8

JettyWebAppのコンテキストパスのルートディレクトリのみをパスワードで保護したいと思います。私のコンテキストパスは/MyAppなので、アクセスするにはパスワードが必要です。

http://localhost:8080/MyApp

ただし、次の場合は対象外です。

http://localhost:8080/MyApp/cometd

私の現在の設定は以下のとおりです(url-patternに注意してください):

<security-constraint>   
    <web-resource-collection>
        <web-resource-name>Private Page</web-resource-name>
            <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>moderator</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
</login-config>

これは、/および/*が一般的にどのように機能するかという性質だけで機能すると思います。私はまた、これがかなりうまくいくはずだと私が信じているこのリソースを見ました:http: //www.coderanch.com/t/364782/Servlets/java/there-key-difference-between-url

ただし、私の場合、URLパターンは次のとおりです。

<url-pattern>/</url-pattern>

<url-pattern>/*</url-pattern>

まったく同じように動作しているようです:両方

http://localhost:8080/MyApp 

http://localhost:8080/MyApp/cometd

両方のパスワードで保護されています。

もちろん、健全性テストと同じように/ nothingishereに変更すると、/ MyApp / nothingishereを除いて、パスワードで保護されるものはありません。

Webサーブレットのルートディレクトリのみを保護する方法を知っている人はいますか?

4

1 に答える 1

5

これがあなたへの答えです:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version="3.0">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <security-constraint>   
        <web-resource-collection>
            <web-resource-name>Private Page</web-resource-name>
            <url-pattern>/</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>moderator</role-name>
        </auth-constraint>
    </security-constraint>
    <security-constraint>   
        <web-resource-collection>
            <web-resource-name>Public page</web-resource-name>
            <url-pattern>/test/*</url-pattern>
        </web-resource-collection>        
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Test Realm</realm-name>
    </login-config>
</web-app>

この構成では、ルートディレクトリはパスワードで保護されていますが、/test/...そうではありません。これがあなたが求めているものだと思います。

この構成は、Tomcat 7以降およびNetBeansで最初から作成された新しいプロジェクトでテストされています(必要に応じて、ソース全体を電子メールで送信できます)。

これは出力です: 出力

于 2012-07-18T22:16:03.783 に答える