2

SpringSecurityを使用するSpringMVCWebアプリがあります。「ストアが閉じられました」機能を追加したいのですが、ストアを閉じるように設定すると、ユーザーがサイト内のどこに移動しようとしても、「ストアが閉じられました」というページが表示されます。

私は次のようにセキュリティフィルターを実装しました(そしてそれをうまく配線することができます):

public class ClosedFilter extends OncePerRequestFilter {

@Override
protected void doFilterInternal(HttpServletRequest req,
        HttpServletResponse response,
        FilterChain chain) throws ServletException, IOException {

    if(storeIsClosed()) {
        //do something useful here
    }else {
        chain.doFilter(req, response);
            }

}

}

しかし、「//ここで何か役に立つことをする」ビットに何を入れるべきかわからない。私が試してみました:

throw new StoreIsClosedException();  //extends RuntimeException

しかし、例外を自分のビューにマップすることはできません。私も試しました

response.redirect("myClosedView");

運がない。私が欲しいのは、概念的に次のようなものです。

   return new ModelAndView("closed");

ありがとう。

4

1 に答える 1

2

解決策が見つかりました。フィルターを次のように変更しました。

public class ClosedFilter extends OncePerRequestFilter {

@Override
protected void doFilterInternal(HttpServletRequest req,
        HttpServletResponse response,
        FilterChain chain) throws ServletException, IOException {

    if (isClosed()) {
        final String path = req.getContextPath()+"/closed.do";
        if(!path.equals(req.getRequestURI())) {
            response.sendRedirect(path);
            return;
        }
    }
    chain.doFilter(req, response);
}


}

そしてこれを私のsecurity.xmlに追加しました

<intercept-url pattern="/closed.do*" access="permitAll"/>
于 2012-10-11T20:02:26.810 に答える