2012-07-16 2 views
8

Jetty WebAppのコンテキストパス上のルートディレクトリのみをパスワードで保護したいと考えています。私のコンテキストパスは/ MyAppにあるので、私はアクセスするためのパスワードを要求したいと思います:jettyのurl-patternとルートディレクトリのみを一致させる

http://localhost:8080/MyApp 

ではなく、ために:

http://localhost:8080/MyApp/cometd 

私の現在のセットアップは、(URLパターンに注意を払う以下であります):

<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> 

これは、/ and/*が一般的にどのように動作するのかというだけでは、この動作が期待されます。 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に変更した場合、ちょうど健全性テストとして、何も唯一のWebサーブレットのルートディレクトリを保護するためにどのように誰を知っています/ MyAppに/ nothingishere

を除き、パスワードで保護されていませんか?ここで

答えて

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の最初から作成された新しいプロジェクトでテストされています(必要に応じてソース全体をメールで送信できます)。

これが出力されます: output

+0

おかげで、これは私が探していたもの_exactly_です。 – Drewch

+0

私のためにもうまくいきます:) 24時間がたつとすぐに賞金を授与します。 –

+1

もちろん、この回答はjettyだけでなく、すべてのj2ee準拠のWebサーバーでも同様です。だから、見出しを変えたいと思うかもしれません... Btw、喜んで助けました – MaVRoSCy

関連する問題