Web.xmlに次のセキュリティ制約を入力しています。私の目的は、XMLファイルがパブリック領域にあることです。これは/images/*
フォルダ。ただし、URLパターン*.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>
他のURLパターンの1つがこれ以上一致していますurl-pattern
-* .xml requestURI、それが機能しない理由です。たとえば、/test/list/user.xml
の場合、これはスーパーユーザーエリアのWebリソースコレクションとして扱われるため、SUPER_USERはアクセスのみが可能です。そのため、衝突や誤解を避けるために、url-patternがリソースに対してより具体的に宣言されていることを確認してください。ありがとう
実際には、配置の順序が問題です。最初のセキュリティ制約はsuper_userで、次にパブリックエリアのセキュリティ制約である必要があります。セキュリティ制約がパブリックエリアに属している場合は、それに続くセキュリティ制約によって上書きされます。