5

次の構造のページはほとんどありません。

--Project
  |---WebContect
      |----Admin/ *
      |----Author/ * 
      |----Readonly/ * 
      |----Index.jsp

Adminユーザーが、Authorおよびの下のページにアクセスできないように制限したいReadonly。誰にもこれらのページにアクセスさせたくありません。誰かがそうしようとした場合は、 にリダイレクトする必要がありますindex.jsp

私の頭に浮かぶ最も簡単な解決策は を使用するFilterことですが、 を使用して実行できるかどうかを調べようとしていますweb.xml

4

3 に答える 3

16

誰もそれらのページに直接アクセスできないようにしたい場合は、それらを/WEB-INFフォルダーに入れてください。

Project
 `-- WebContect
      |-- WEB-INF
      |    |-- Admin
      |    |-- Author
      |    `-- Readonly
      `-- Index.jsp

この方法では、ページはパブリックにアクセスできませんが、転送を実行するサーブレットによってのみアクセスできます。エンドユーザーが直接アクセスしようとすると、HTTP 404 エラーだけが表示されます。

別の方法は、役割のない を構成すること<security-constraint>です。

<security-constraint>
    <display-name>Restrict direct access to certain folders</display-name>
    <web-resource-collection>
        <web-resource-name>Restricted folders</web-resource-name>
        <url-pattern>/Admin/*</url-pattern>
        <url-pattern>/Author/*</url-pattern>
        <url-pattern>/Readonly/*</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

エンドユーザーがそれらにアクセスしようとすると、HTTP 403 エラーだけが表示されます。

いずれにせよ、エンドユーザーをこの方法にリダイレクトすることはできませんindex.jsp。それができるのはAだけFilterです。404 または 403 のエラー ページの場所として構成できます。index.jsp

<error-page>
    <error-code>404</error-code>
    <location>/index.jsp</location>
</error-page>

しかし、これはすべての 404 (または 403)をカバーしますが、それが必要かどうかはわかりません。

于 2012-06-29T13:06:01.067 に答える
0

ロール許可によってページ/フォルダーへのアクセスを許可したい場合は 、web-xml ファイルにセキュリティ制約を設定する必要があります

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>DESC_OF_FOLDER</web-resource-name>
      <url-pattern>/users/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>REGISTERED_USER_ROLE</role-name>
    </auth-constraint>
  </security-constraint>

標準の Jaas 認証を使用している場合は、このコードでロールを取得できます。

        if ((request.getUserPrincipal().getName()) != null) {
            String userName = request.getUserPrincipal().getName().trim();
            .....

            if (request.isUserInRole("REGISTERED_USER_ROLE")) {
                .....
            } 
         }

お役に立てれば

アップデート

また、ログイン ページへのリダイレクトのために、web.xml にも次のようなものが必要です。

<form-login-config>
  <form-login-page>/login.jsp</form-login-page>
  <form-error-page>/error.jsp</form-error-page>
</form-login-config>
于 2012-06-29T15:27:20.873 に答える
0

あなたはこれを試しましたか?(URL マッピングのサンプル)

<security-constraint>   
                <web-resource-collection>   
                        <web-resource-name>Protected Area</web-resource-name>   
                        <url-pattern>/*</url-pattern>   
                </web-resource-collection>   

                <auth-constraint>   
<--! These are the groups in AD -->   
                        <role-name>Engineering</role-name>   
                        <role-name>Migration Expert</role-name>   
                        <role-name>Developers</role-name>   

                </auth-constraint>   
        </security-constraint>   

  <security-constraint>   
   <web-resource-collection>   
      <url-pattern>/update/*</url-pattern>   
   </web-resource-collection>   
  </security-constraint>   

        <login-config>   
                <auth-method>BASIC</auth-method>   
                <realm-name>Services Portal</realm-name>   
        </login-config>
于 2012-06-29T09:53:17.067 に答える