天天看點

spingboot handlerinterceptor實作使用者認證和頁面攔截跳轉之二 spring配置

1、

@autowired自動裝配:

對類成員變量、方法、構造函數進行标注,完成自動裝配。

 消除set、get方法,在IoC容器中查找對應類型的bean裝配

 2、

使用裝配好的authorizationIntercetor

addPathPatterns("/pro/**")是/pro目錄下的任何連結都要進入authorizationIntercetor執行。

excludePathPatterns(excludeUrl)是除了這個清單中的路徑無需進入權限攔截器執行

package com.pro.interceptorsconfig;

import java.util.LinkedList;

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

import com.pro.sign.interceptors.AuthorizationInterceptor;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/*autowired自動裝配;對類成員變量、方法、構造函數進行标注,完成自動裝配。
 * 消除set、get方法,在IoC容器中查找對應類型的bean裝配
 * 權限攔截sign-rest中的interceptor中*/
  @Autowired
  private AuthorizationInterceptor authorizationInterceptor;
/*使用模闆字元串替換進行指派
 * resource/application.yml 中擷取響應的數值,實作最少的代碼改動量
 * */

  @Value("${proconfig.is-open-authorization-interceptor}")
  private boolean isOpenAuthorizationInterceptor;

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    if (isOpenAuthorizationInterceptor) {
    	/*設定一個清單,用來存放不需要攔截的路徑*/
      LinkedList<String> excludeUrl = new LinkedList<>();
      excludeUrl.add("/pro/login");
      excludeUrl.add("/pro/register");
      excludeUrl.add("/initdata");
      /*使用裝配好的authorizationIntercetor
       * addPathPatterns("/pro/**")是/pro目錄下的任何連結都要進入authorizationIntercetor執行。
       * excludePathPatterns(excludeUrl)是除了這個清單中的路徑無需進入權限攔截器執行*/
      registry.addInterceptor(authorizationInterceptor).addPathPatterns("/pro/**").excludePathPatterns(excludeUrl);
    }
  }

}