2016-12-01 14 views
2

トークンが無効になった場合、セッションで設定されたトークンオブジェクトに対して何らかの認証を行うjavax.servlet.Filterを実装するクラスがあります。403の禁止応答を返したいと思います。だから私は、私はそれから起こるしたいどのような何かサーブレットフィルタのレスポンスコードを設定する

@Override 
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throw ServletException { 
    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 
    ... 
    ... 
    // Something has gone wrong with auth set the response code and 
    // continue with the chain 
    response.setStatus(403); 
    chain.doFilter(request, response); 
} 

等を有していてweb.xmlで定義され <error-page>は403応答コードに対して

<error-page> 
    <error-code>403</error-code> 
    <location>/forbidden.xhtml</location> 
</error-page> 

をトリガするためである私はのそのネットワーク]タブを見ることができますブラウザのdevツールは403タイプの応答を正しく表示します。しかし、ブラウザは私が期待しているようなエラーページにリダイレクトしません、私はここで何が間違っていますか?

答えて

8

私の間違いが起こるために必要なものをresponse.setStatus(403)をしていた。これは私にとって非常によく働い

response.sendError(403); 
return; 
+0

だった、私は戻ってUIへの応答を送信するためにカスタムエラーメッセージを使用しています。 \t \t \t \t \t キャッチ(例外e){ log.error(String.Formatの( "例外トークンの検証で発生しました:%s" は、e.getMessage()))。 \t((HttpServletResponse)response).sendError(401、AuthzError.INVALIDAUTHTOKEN.getDescription()); \t return; } \t \t \t \t \t \t \t \t \t} – Sindhu

関連する問題