首先配置redis编码配置类
@Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport{ //防止存入redis中的数据乱码 @Autowired private RedisTemplate redisTemplate; @Bean public RedisTemplate<String, Object> stringSerializerRedisTemplate() { RedisSerializer<String> stringSerializer = new StringRedisSerializer(); redisTemplate.setKeySerializer(stringSerializer); redisTemplate.setValueSerializer(stringSerializer); redisTemplate.setHashKeySerializer(stringSerializer); redisTemplate.setHashValueSerializer(stringSerializer); return redisTemplate; } }
再拦截器中进行登录拦截
@Configuration //拦截登录配置类 public class ControllerInterceptor implements HandlerInterceptor{ @Autowired private RedisTemplate redisTemplate; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if(redisTemplate.opsForValue().get("username")!=null) {
//redisTemplate.expire("username", 30l, TimeUnit.MINUTES); //通过此方法可以设置在redis中的存储时间 每访问一次登录方法都重新设定时间 return true; }else { response.setCharacterEncoding("GBK"); response.getWriter().write("请登录"); return false; } } }
@Configuration //MVC拦截器 public class InterceptorConfig implements WebMvcConfigurer { @Bean //在spring容器中注册登录拦截器 public ControllerInterceptor apiInterceptor() { return new ControllerInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { // registry.addInterceptor(apiInterceptor()); String[] patterns = { "/**" }; String[] excludePathPaterns = { "/allusers/selectpwd" }; // 拦截路径 registry.addInterceptor(apiInterceptor()).addPathPatterns(patterns).excludePathPatterns(excludePathPaterns); } @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS") .allowCredentials(true).maxAge(3600).allowedHeaders("*"); } }