URL リソースを保護するために SPRING URL セキュリティを使用しています。
これは、デプロイメント記述子 (web.xml) で次のように構成されています。
<filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
SPRING SECURITY XML 構成ファイルでの構成。
<http use-expressions="true" auto-config="false" disable-url-rewriting="true" access-decision-manager-ref="urlSecurityAccessDecisionManager" > <access-denied-handler ref="accessDeniedHandler" /> <!--if access is denied (false) I'll be redirected to some JSP--> <intercept-url pattern="/getGroupMembers.action*" access="isAuthenticated() and (request.getParameter('groupId')!= null ? amIAMemberOfThisGroup(request.getParameter('groupId')) : true)"/>
amIAMemberOfThisGroup(int groupId) の実装は次のとおりです。
public boolean amIAMemberOfThisGroup(int groupId) throws Exception { Group group = getEntityManager().find(Group.class, groupId); if (group == null) { throw new Exception("Group not found. Invalid Group Id:" + groupId + ."); } //if logged in user is member of this group return true else false }
これは、true と false の両方の結果でうまく機能しています。 true-URL によって要求されたリソース/データが返されます false--accessDenied ページにリダイレクトされます。
DB にグループが存在しない /getGroupMembers.action?groupId=678342 のような値を渡すと、groupId に対応してフェッチされたグループが null であるため、メソッドは適切に例外をスローします。しかし、私の Web アプリケーションは単に私を空白のページにリダイレクトします。アクセス チェックを実行するメソッドによって例外がスローされた場合に、一般的なエラー ページにリダイレクトできるように、URL セキュリティに不足している構成はありますか?