-
开发登录拦截器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 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { try { // 获取token String token = request.getHeader("token"); if (token == null) { token = request.getParameter("token"); } if (StrUtil.isNotBlank(token)) { // 校验token User 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 { @Bean public LoginInterceptor loginInterceptor() { return new LoginInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor()) // 拦截全部路径 .addPathPatterns("/**") // 不拦截路径 .excludePathPatterns("/test"); WebMvcConfigurer.super.addInterceptors(registry); } }
springboot开发登录拦截器
最新推荐文章于 2024-09-08 15:52:26 发布