-
开发登录拦截器LoginInterceptor
package com.gen.genonlineclassroom.interceptor;import cn.hutool.core.util.StrUtil; import com.gen.genonlineclassroom.entity.User; import com.gen.genonlineclassroom.enums.ResponseCodeEnum; import com.gen.genonlineclassroom.exception.CustomException; import com.gen.genonlineclassroom.utils.JwtUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** 登录拦截器** @author Gen*/ @Slf4j public class LoginInterceptor implements HandlerInterceptor {/*** 进入controller之前拦截** @param request* @param response* @param handler* @return* @throws Exception*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {try {// 获取tokenString token = request.getHeader("token");if (token == null) {token = request.getParameter("token");}if (StrUtil.isNotBlank(token)) {// 校验tokenUser user = JwtUtil.checkToken(token);if (user == null) {// 登录失败,token无效throw new CustomException(ResponseCodeEnum.LOGIN_FAIL.getCode(), ResponseCodeEnum.LOGIN_FAIL.getMsg());}request.setAttribute("user", user);return true;}} catch (Exception e) {log.error("登录拦截器异常==》异常:{}", e);}throw new CustomException(ResponseCodeEnum.LOGIN_FAIL.getCode(), ResponseCodeEnum.LOGIN_FAIL.getMsg());} }
-
LoginInterceptor拦截器注册和路径校验配置
package com.gen.genonlineclassroom.config;import com.gen.genonlineclassroom.interceptor.LoginInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** 拦截器配置*/ @Configuration public class InterceptorConfig implements WebMvcConfigurer {@Beanpublic LoginInterceptor loginInterceptor() {return new LoginInterceptor();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(loginInterceptor())// 拦截全部路径.addPathPatterns("/**")// 不拦截路径.excludePathPatterns("/test");WebMvcConfigurer.super.addInterceptors(registry);} }