14

web.xml に次のセキュリティ制約を入力しました。私の目的は、XML ファイルがパブリック エリアにあることです。これは、/images/*フォルダーに対して機能します。ただし、url-pattern*.xmlは機能していないようです。何か案は ?

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Public Area</web-resource-name>
            <url-pattern>/xyz</url-pattern>
            <url-pattern>/images/*</url-pattern>
            <url-pattern>/yyz/*</url-pattern>
            <url-pattern>*.xml</url-pattern>
        </web-resource-collection>
    </security-constraint>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Super User Area</web-resource-name>
            <url-pattern>/test/list1</url-pattern>
            <url-pattern>/test/list2</url-pattern>
            <url-pattern>/test/list3</url-pattern>
            <url-pattern>/test/admin.html</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>SUPER_USER</role-name>
        </auth-constraint>
    </security-constraint>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected Area</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>ADMIN</role-name>
            <role-name>END_USER</role-name>
        </auth-constraint>
    </security-constraint>


    <security-role>
        <description>Super User</description>
        <role-name>SUPER_USER</role-name>
    </security-role>
    <security-role>
        <description>Admin User</description>
        <role-name>ADMIN</role-name>
    </security-role>
    <security-role>
        <description>End User</description>
        <role-name>END_USER</role-name>
    </security-role>
4

2 に答える 2

9

他の URL パターンの 1 つがこれよりも多く一致しますurl-pattern- *.xml requestURI。これが機能していない理由です。たとえば、 がある場合、これはスーパー ユーザー エリア/test/list/user.xmlの Web リソース コレクションとして扱われるため、SUPER_USERのみがアクセスできます。そのため、競合や誤解を避けるために、url-pattern がリソースに固有のものとして宣言されていることを確認してください。ありがとう

于 2013-10-18T05:03:54.270 に答える
1

実際には、配置の順序が問題です。最初にセキュリティ制約が super_user で、次にパブリック エリアのセキュリティ制約が必要です。セキュリティ制約がパブリック領域に属している場合は、セキュリティ制約に従って上書きされます。

于 2016-11-07T13:06:38.600 に答える