SpringBoot構成グローバルURLインターセプター(ログイン判定)
インターセプターを定義します。HandlerInterceptorクラスを実装し、3つのメソッドを書き直します。
- セッションのユーザー情報を使用して、ログインしたかどうかを判断します。ログインしていない場合は、NoLoginExceptionカスタム例外をスローし、グローバル例外処理クラスに移動してこの例外をキャプチャして処理します。グローバル例外クラスは言うまでもなく、グローバル例外処理に関する以前のブログ。
public class UrllInterceptor extends BaseController implements HandlerInterceptor {
private Logger logger= Logger.getLogger(UrllInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
CurrentUser currentUser = getCurrentUser(request);
String requestURI = request.getRequestURI();
if(requestURI.contains("/login")){
return true;
} else if(currentUser==null){
logger.info("==========当前用户没有登录");
response.setStatus(201);
// 抛出没有登录的异常,在全局异常中进行处理
throw new NoLoginException("没有登录请重新登录!");
}
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 {
logger.info("==========请求Url:"+request.getRequestURL()+" "+"==========请求状态:"+response.getStatus());
}
}
構成WebMvcConfigurer
- druid、swagger、およびその他のファイルアップロードインターフェイスを構成する場合は、ここでリリースする必要があります
@Configuration
public class UrlConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册TestInterceptor拦截器
InterceptorRegistration registration = registry.addInterceptor(new UrllInterceptor());
registration.addPathPatterns("/**"); //所有路径都被拦截
registration.excludePathPatterns( //添加不拦截路径
"你的登陆路径", //登录
"/**/*.html", //html静态资源
"/**/*.js", //js静态资源
"/**/*.css", //css静态资源
"/**/*.woff",
"/**/*.ttf"
);
}
}
要するに、実装は比較的単純です。詳細については、コードクラウドアドレスhttps://gitee.com/Marlon_Brando/back.gitを参照してください。