springboot2.xログインブロックの構成

3213 ワード

参照リンク:https://blog.csdn.net/qq_36177977/article/details/86241780 
1.ブロッキングクラスLoginInterceptorを作成してHandlerInterceptorインタフェースを実現します.numberはあなたのログインユーザー名のkeyです.ログインが完了したら、ログイン名をsession(session.setAttribute(「number」,number);)に保存する必要があります.
  • preHandle:ビジネスプロセッサが要求を処理する前に呼び出されます.前処理は、符号化、安全制御、権限検査などの処理を行うことができる.
  • postHandle:ビジネスプロセッサ処理要求の実行が完了した後、ビューを生成する前に実行します.後処理(サービスを呼び出してModelAndViewに戻りますが、ページレンダリングは行われません)、ModelAndViewを変更する機会があります.
  • afterCompletion:DispatcherServiceletが要求を完全に処理した後に呼び出され、リソースのクリーンアップなどに使用できます.処理を返します(ページがレンダリングされています).
  • package security.util;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    /**
     *      
     * @author xiaojian
     *
     */
    public class LoginInterceptor implements HandlerInterceptor{
    	private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
        @Override
        public boolean preHandle(HttpServletRequest request,
                                 HttpServletResponse response, Object handler) throws Exception {
        	
            String user = (String)request.getSession().getAttribute("number");
            if (user == null || user.equals(""))  {
            	logger.info("        ");
                response.sendRedirect("/loginView");
                return false;
            }
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        }
    
    }
    

    2.ブロッキングを登録し、MyWebAppConfigurerクラスを作成してWebMvcConfigurerインタフェースを実現し、addPathPatternsメソッドはブロッキングパスを設定し、excludePathPatternsメソッドはホワイトリストを設定し、つまりこのブロッキングをトリガーする必要がないパスを設定します.
    package security.util;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    /**
     * addPathPatterns         ,excludePathPatterns        ,                。
     * @author xiaojian
     *
     */
    @Configuration
    public class MyWebAppConfigurer 
            implements WebMvcConfigurer   {
    	 @Override
    	    public void addInterceptors(InterceptorRegistry registry) {
    	        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login.html")
    	        .excludePathPatterns("/loginView").excludePathPatterns("/login").excludePathPatterns("/static/**","/public");
    	    }
    	}
    

    3.注意点:自分のアクセス登録ページインタフェースと登録インタフェースをホワイトリストに入れないと、ずっと登録ページにとどまることになります.
    4.アプリケーションで必要です.propertiesで静的リソースアクセスパスを構成します.html、css、js、ピクチャファイルにアクセスできません.
    #      
    spring.mvc.static-path-pattern=/static/**

    5.注意点:layuiのフロントフレームワークを使用しています.cssファイルにアクセスできない可能性があります.対応するファイルを開いてパスを変更し、手順4で構成した静的リソースアクセスパスに変更する必要があります.