package com.java1234.miaosha.config;
import com.java1234.miaosha.interceptor.SysInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebAppConfigurer implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE","OPTIONS")
.maxAge(3600);
}
public SysInterceptor sysInterceptor(){
return new SysInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
String[] pattern=new String[]{"/login"};
registry.addInterceptor(sysInterceptor())
.addPathPatterns("/**")
.excludePathPatterns(pattern);
}
}
package com.java1234.miaosha.interceptor;
import com.java1234.miaosha.constant.Constant;
import com.java1234.miaosha.util.RedisUtil;
import com.java1234.miaosha.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SysInterceptor implements HandlerInterceptor {
@Autowired
private RedisUtil redisUtil;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String path=request.getRequestURI();
System.out.println(path);
if(handler instanceof HandlerMethod){
String token = request.getHeader("token");
System.out.println("token"+token);
if(StringUtil.isEmpty(token)){
System.out.println("token未空!");
throw new RuntimeException("签名验证不存在");
}else{
Object o=redisUtil.get(Constant.REDIS_TOKEN_PREFIX,token);
if(o!=null){
System.out.println("验证成功");
return true;
}else{
System.out.println("签名失败");
}
}
}else{
return true;
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}
}
<template>
<div>
<img src="~@/assets/logo.png" height="120px" width="300px" alt="分布式电商秒杀系统">
</div>
</template>
<script>
import axios from 'axios'
import {getServerUrl} from "@/config/sys";
export default {
name: 'Header',
methods:{
refreshToken(){
let url=getServerUrl("refreshToken");
let token=window.sessionStorage.getItem("token");
axios.defaults.headers.common['token']=token;
axios.get(url,{})
.then(response=>{
console.log(response.data);
if(response.data.code==0){
console.log('token刷新成功');
}
}).catch(error=>{
alert(error+"-请联系管理员");
})
}
},
mounted () {
// setInterval(this.refreshToken,1000*60*10); //10分钟刷新一次token
setInterval(this.refreshToken,5000);
}
}
</script>
<style scoped>
</style>