SpringBootブロッキング構成
5339 ワード
一、URLに基づいて実現するブロック:
public class LoginInterceptor extends HandlerInterceptor{ /**www.1b23.com
* (Controller )
* URL
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String path = request.getServletPath();
if (path.matches(Const.NO_INTERCEPTOR_PATH)) { // return true;
} else { // , ,SESSION,
System.out.println("===================================="); return true;
}
}
}
キーコード:path.matches(Const.NO_INTERCEPTOR_PATH)は、正規マッチングに基づくurlである.
import com.example.demo1.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/** *
*java www.1b23.com
* @Package: com.*.*.config *
@ClassName: LoginConfig *
@Description: *
author: zk *
@date: 2019 9 19 2:18:35 *
/@Configurationpublic class LoginConfig implements WebMvcConfigurer
{ @Overridepublic void addInterceptors(InterceptorRegistry registry)
{ // TestInterceptor InterceptorRegistration registration = registry.addInterceptor(new LoginInterceptor());
registration.addPathPatterns("/**"); // }
}
/**java www.1b23.com * @author BianP
* @explain
*/public class Const {
public static final String SUCCESS = "SUCCESS";
public static final String ERROR = "ERROR";
public static final String FIALL = "FIALL";
/********************** ****************************/
public static final String SESSION_USER = "loginedAgent";
// public static final String SESSION_LOGINID = "sessionLoginID";
// ID public static final String SESSION_USERID = "sessionUserID";
// ID public static final String SESSION_USERNAME = "sessionUserName";
// ID public static final Integer PAGE = 10;
// public static final String SESSION_URL = "sessionUrl";
// url public static final String SESSION_SECURITY_CODE = "sessionVerifyCode";
//
//
public static final int TIMEOUT = 1800;
// public static final String ON_LOGIN = "/logout.htm";
public static final String LOGIN_OUT = "/toLogout";
// URL anon: /authc:
public static final String NO_INTERCEPTOR_PATH =".*/((.css)|(.js)|(images)|(login)|(anon)).*";
}
二、注釈に基づくブロック
①注記の作成:
/**
* Controller java www.1b23.com
*/@Target({ElementType.METHOD})//
@Retention(RetentionPolicy.RUNTIME)//
public @interface LoginRequired {
}
②ブロッキングの作成:
public class AuthorityInterceptor extends HandlerInterceptorAdapter{
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // if (!(handler instanceof HandlerMethod)) {
return true;
} // ①:START
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
//
LoginRequired methodAnnotation = method.getAnnotation(LoginRequired.class); // @LoginRequired , if (methodAnnotation != null) { // , ,SESSION,
System.out.println("===================================="); return true;
}
return true;
}
}
三、ブロッカーを配置に追加し、SpringMVC時の配置ファイルに相当すること:
/**
* springmvc webmvc
* @author BIANP java www.1b23.com
*/@Configurationpublic class WebConfigurer implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // , @LoginRequired
registry.addInterceptor(LoginInterceptor()).addPathPatterns("/**");
registry.addInterceptor(AuthorityInterceptor()).addPathPatterns("/**");
}
@Bean public LoginInterceptor LoginInterceptor() { return new LoginInterceptor();
}
@Bean public AuthorityInterceptor AuthorityInterceptor() { return new AuthorityInterceptor();
}
}
1、必ず@Configurationという注釈を付け、起動時にロードされます.
2、いくつかのチュートリアルは「WebMvcConfigurerAdapter」を使っていますが、spring 5では.0バージョン以降、このクラスはWebMvcConfigurerAdapterに破棄され、まだ使えますが、よく見えません.
3、いくつかのチュートリアルで使用されているWebMvcConfigurationSupportもありますが、classpath:/META/resources/,classpath:/resources/,classpath:/static/,classpath:/public/)は有効ではありません.具体的には、WebMvcAutoConfigurationに条件注記があるので、ソースコードを見てみましょう.
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
だからやはりWebMvcConfigurerを使うことをお勧めしますが、実はspringMVCの多くのものはspringbootに移して使うことができます.プロファイルのパターンを、対応@Configurationクラスに変えるだけでいいです.
HandlerInterceptor