例外を404ページにマッピングすると、Spring Securityタグはセキュリティコンテキストから認証情報を見つけることができません。 「本当の」404で、認証が見出される。Spring Security taglibsを使用中に404ページに例外をマッピング
私のweb.xml:JSPオン
<error-page>
<exception-type>com.example.NotFoundException</exception-type>
<location>/app/404</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/app/404</location>
</error-page>
私が持っている:
<sec:authorize access="hasRole('ROLE_USER')">
<%-- Show navigation links --%>
</sec:authorize>
<sec:authorize access="isAnonymous()">
<%-- Show login form --%>
</sec:authorize>
/app/404
パスがちょうどビューを返しコントローラにマッピングされています。 /foo/some_invalid_id
を参照すると、コントローラからNotFoundException
がスローされ、最終的にJSPに行くとSecurityContext
で認証が見つからず、2つのオプションのどちらもレンダリングされません。代わりに、私が/something_that_really_doesnt_exist
にブラウズしているとき、私がログインしているかどうかを把握して、適切なHTMLをレンダリングすることができます。
これはおそらくhttp://stackoverflow.com/questions/4153438/spring-security-issue-with-404-errorに役立ちます –
ありがとうございますが、それは私を助けませんでした。 – hleinone