SpringBoot Filterフィルタを実現

4159 ワード

SpringBootフィルタとSprigMVCでは大差がないことを実現します.主な違いはフィルタ登録にあります.SpringMVCはXML設定ファイルでフィルタ登録します.Spring Bootはコード注釈で登録します.次にSpringBootでFilterフィルタの実現方法を見てみましょう.
Filterフィルタの具体的な実現類
/** *         */
public class AuthFilter implements Filter {

    @Override
    public void destroy() {
        //     ,      
    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)arg0;
        HttpServletResponse response = (HttpServletResponse)arg1;
        if(needLogin(request)) {
            //           Controller
            response.sendRedirect("login");
            return;
        }
        chain.doFilter(arg0, arg1);
    }

    @Override
    public void init(FilterConfig config) throws ServletException {
        //      
    }

    /** *          * @param request * @return */
    private boolean needLogin(HttpServletRequest request) {
        //             
        return false;
    }

}
ここでは、権限検証用のフィルタを実装して、ユーザーがログインしているかどうかを判断します.ログインしていないと、ログイン画面に遷移します.そうでなければ、次の操作を続けます.Filterの実現と操作はSpringMVCと同じです.ここでは説明しすぎません.
Filterフィルタを登録する
/** *        ,         、          * @author Administrator */
@Configuration
public class CustemConfigurerAdapter {

    @Bean
    public FilterRegistrationBean authFilterRegistrationBean() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setName("authFilter");
        AuthFilter authFilter = new AuthFilter();
        registrationBean.setFilter(authFilter);
        registrationBean.setOrder(1);
        List urlList = new ArrayList();
        urlList.add("/*");
        registrationBean.setUrlPatterns(urlList);
        return registrationBean;
    }

}
上はユーザー定義の設定項目登録クラスです.@Configurationタグを使用すると、SpringBootがこのクラスが構成クラスであることを知るために登録が必要です.@Configurationでは、ステートメント注釈@Beanは、Springの古いバージョンで構成ファイルでビーンを宣言するのに相当する.authFilterRegistrationBean方法はAuthFilterフィルタリング類の登録であり、urlList.add("/*")はこのフィルタを追加するためにフィルタを必要とするURLアドレスであり、複数を追加することができる.registrationBean.setOrder(1)は、フィルタの実行順序を設定するものである.SpringBootはorderによって小さい時から大きい順に実行されます.