WebConfig 灰太狼 2022-10-09 14:24 143阅读 0赞 package com.zyq.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import com.zyq.interceptor.LoginInterceptor; /** * 项目配置:拦截器/过滤器/系统参数配置等 */ @Configuration public class WebConfig implements WebMvcConfigurer { /** * 拦截器Bean化,不然注入元素会为null,拦截器的执行是在spring容器中bean初始化之前的, * 拦截器执行时,spring中我们定义的bean还未初始化,自然也就无法自动注入,无法使用。 */ @Bean public LoginInterceptor loginInterceptor() { return new LoginInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { // 登录拦截器:拦截所有请求 registry.addInterceptor(loginInterceptor()).addPathPatterns("/**"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 解决静态资源无法访问 registry.addResourceHandler("/").addResourceLocations("classpath:/static/"); // 解决swagger无法访问 registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); // 解决swagger的js文件无法访问 registry.addResourceHandler("/webjars/").addResourceLocations("classpath:/META-INF/resources/webjars/"); } /** 全局跨域设置 */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("*").allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE") .maxAge(3600).allowCredentials(true); } } package com.zyq.interceptor; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.alibaba.fastjson.JSON; import com.zyq.config.WhiteListConfig; import com.zyq.constant.Constant; import com.zyq.entity.vo.TokenVo; import com.zyq.exception.MyException; import com.zyq.service.TokenService; import com.zyq.util.BaseUtil; import com.zyq.util.JwtUtil; import com.zyq.util.RedisUtil; import cpm.zyq.enums.ResultEnum; import lombok.extern.slf4j.Slf4j; /** * 全局拦截器(白名单过滤、Token校验) */ @Slf4j public class LoginInterceptor extends HandlerInterceptorAdapter { @Resource private RedisUtil redisUtil; @Resource private TokenService tokenService; // 是否放行所有请求(不用登录) private boolean isPassAll = true; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 放行OPTION请求(跨域请求会员OPTIONS请求预检测) if (request.getMethod().equals("OPTIONS") || isPassAll) { return true; } // 获取请求URI String uri = request.getRequestURI(); log.info("----------------------------------------"); log.info("请求URI:[{}]", uri); // 白名单校验 if ((BaseUtil.isNotEmpty(uri) && WhiteListConfig.isContain(uri))) { return true; } // 获取Header中的Token String token = request.getHeader(Constant.TOKEN_KEY); if (BaseUtil.isEmpty(token)) { throw new MyException(ResultEnum.LOGIN_AGAIN); } // 解析Token String decodedToken = JwtUtil.decodedToken(token); TokenVo vo = JSON.parseObject(decodedToken, TokenVo.class); // 获取Redis中的Token /*String redisKey = Constant.REDIS_USER_KEY + vo.getUserId(); Object obj = redisUtil.get(redisKey); if (Objects.isNull(obj) || !obj.toString().equals(token)) { throw new MyException(ResultEnum.LOGIN_AGAIN); }*/ // 设置用户新增 request.setAttribute(Constant.TOKEN_USER, vo); return true; } }
相关 WebConfig package com.zyq.config; import org.springframework.context.annotation.Bean; 灰太狼/ 2022年10月09日 14:24/ 0 赞/ 144 阅读
相关 WebConfig加密/解密 WebConfig加密 数据库的连接字符串标准都是放到web.config里,因为有API可以直接访问并取出数据,这样实际上非 常不安全,都是以明文形式显示的,如果WEB服 小咪咪/ 2022年03月27日 08:30/ 0 赞/ 236 阅读
相关 SpringBoot2.x WebConfig 自定义参数加载器 package com..config; import com.zichan360.common.aspect.GetVodClientAspect; 蔚落/ 2022年01月31日 15:27/ 0 赞/ 353 阅读
相关 WebConfig 详解 一、`Web.Config`继承特性 首先我们就来看看配置文件的继承层次。都知道在ASP.NET中有很多的配置文件,如`machine.config`,`web.conf 迷南。/ 2021年06月26日 16:06/ 0 赞/ 463 阅读
还没有评论,来说两句吧...