SpingBootフレームワークのブロッキング構成

2749 ワード

(1)引用
ログインモジュールでは、ユーザーはログインしてからしかアクセスできないため、セッションに値があるかどうかを判断し、ログインしていない場合はログインページにジャンプし、他のページにもアクセスできないブロッカーが必要です.
(2)手順
a:
HandlerInterceptorAdapterクラスを継承し、中のpreHandleメソッドを複写する必要があるブロッカークラスをカスタマイズします.このブロッカーのビジネスロジックは、メソッドを実行する前に実行できます.(自分で定義したこのブロッカークラスはspring管理に渡す必要があります.つまり、注釈でクラスに@Component注釈を付ける必要があります)
package cn.itsource.auth.web.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class LoginInterceptor extends HandlerInterceptorAdapter{
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,     
    Object handler) throws Exception {
        System.out.println("       !!!");
        //    session      
        Object user_in_session = request.getSession().getAttribute("USER_IN_SESSION");
        if (null == user_in_session){ //              
            response.sendRedirect("/login"); //      
            return false; //   
        }
        return true; //  
    }
}

b:
このブロッキングクラスは、springBootのブロッキング構成に自分で書いたブロッキングクラスを登録する構成も必要です.
WebMvcConfigurerインタフェースを実装する必要がある構成クラスをカスタマイズし、クラスに注記@Configurationを付ける必要があります.このクラスの役割はSSMフレームワークのSpringMVCに相当します.xmlプロファイル.自分で書いたブロッカークラスをspringBoot管理に登録するには、addInterceptorsメソッドをこのクラスに書き換える必要があります.
package cn.itsource.auth.web.interceptor;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 *    
 */
@Configuration//         ,        xml  
public class MyConfig implements WebMvcConfigurer{

    @Autowired //                
    private LoginInterceptor LoginInterceptor;

    /**
     *                  
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //  /**          ---excludePathPatterns("/login")  login    
        registry.addInterceptor(LoginInterceptor).addPathPatterns("/**")
                .excludePathPatterns("/login").excludePathPatterns("/assets/**");

        //        ,            
        registry.addInterceptor(LoginInterceptor).addPathPatterns("/**")
                .excludePathPatterns("/login").excludePathPatterns("/assets/**");
    }

}

遮断器の配置が完了しました!!!