主动校验时间戳, 判断登录是否失效
This commit is contained in:
parent
3c0491662d
commit
1ae46b6387
@ -1,5 +1,5 @@
|
|||||||
// import { login, logout, getInfo } from '@/api/user'
|
// import { login, logout, getInfo } from '@/api/user'
|
||||||
import { getToken, setToken, removeToken } from '@/utils/auth'
|
import { getToken, setToken, removeToken, setTimeStamp } from '@/utils/auth'
|
||||||
|
|
||||||
// 导入登录api
|
// 导入登录api
|
||||||
import { getUserInfo, login, getUserDetailInfoById } from '@/api/user'
|
import { getUserInfo, login, getUserDetailInfoById } from '@/api/user'
|
||||||
@ -138,6 +138,7 @@ const actions = {
|
|||||||
const res = await login(data)
|
const res = await login(data)
|
||||||
console.log('将登录页的逻辑移动到 vuex 里面')
|
console.log('将登录页的逻辑移动到 vuex 里面')
|
||||||
commit('setToken', res)
|
commit('setToken', res)
|
||||||
|
setTimeStamp()
|
||||||
},
|
},
|
||||||
// 获取用户信息
|
// 获取用户信息
|
||||||
async getUserInfo({ commit }) {
|
async getUserInfo({ commit }) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
|
|
||||||
const TokenKey = 'hr_token' // 设定一个独一无二的key
|
const TokenKey = 'hr_token' // 设定一个独一无二的key
|
||||||
|
const timeKey = 'hr_timestamp_key' // 设置一个存时间戳的key
|
||||||
|
|
||||||
export function getToken() {
|
export function getToken() {
|
||||||
return Cookies.get(TokenKey)
|
return Cookies.get(TokenKey)
|
||||||
@ -13,3 +14,16 @@ export function setToken(token) {
|
|||||||
export function removeToken() {
|
export function removeToken() {
|
||||||
return Cookies.remove(TokenKey)
|
return Cookies.remove(TokenKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置时间戳的函数
|
||||||
|
export function setTimeStamp() {
|
||||||
|
return Cookies.set(timeKey, Date.now())
|
||||||
|
}
|
||||||
|
// 获取时间戳
|
||||||
|
export function getTimeStamp() {
|
||||||
|
return Cookies.get(timeKey)
|
||||||
|
}
|
||||||
|
// 删除时间戳
|
||||||
|
export function removeTimeStamp() {
|
||||||
|
return Cookies.set(timeKey)
|
||||||
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
import store from '@/store'
|
import store from '@/store'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
import router from '@/router'
|
||||||
|
import { getTimeStamp } from '@/utils/auth'
|
||||||
import { Message } from 'element-ui'
|
import { Message } from 'element-ui'
|
||||||
// import { MessageBox, Message } from 'element-ui'
|
// import { MessageBox, Message } from 'element-ui'
|
||||||
// import store from '@/store'
|
// import store from '@/store'
|
||||||
// import { getToken } from '@/utils/auth'
|
// import { getToken } from '@/utils/auth'
|
||||||
|
const timeout = 1 * 60 * 60 * 60
|
||||||
|
|
||||||
// create an axios instance
|
// create an axios instance
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
@ -12,12 +15,22 @@ const service = axios.create({
|
|||||||
timeout: 5000 // request timeout
|
timeout: 5000 // request timeout
|
||||||
})
|
})
|
||||||
|
|
||||||
// request interceptor // axios的请求拦截器
|
// request interceptor // axios的请求拦截器, 两个参数
|
||||||
service.interceptors.request.use(
|
service.interceptors.request.use(
|
||||||
config => {
|
async config => {
|
||||||
// 请求拦截器需要token的时候添加token
|
// 请求拦截器需要token的时候添加token
|
||||||
if (store.getters.token && !config.headers.Authorization) { // 有token并且没有请求头
|
if (store.getters.token && !config.headers.Authorization) { // 有token并且没有请求头
|
||||||
config.headers.Authorization = `Bearer ${store.getters.token}` // 在请求头添加token
|
// 先判断时间戳是否过期
|
||||||
|
// 如果时间戳已经过期, 1. 退出登录 2. 跳转登录页 3. 拦截剩下的请求
|
||||||
|
// 如果没过期, 给请求头添加token
|
||||||
|
if (checkTimeout()) {
|
||||||
|
await store.dispatch('user/logout')
|
||||||
|
router.push('/login')
|
||||||
|
// debugger
|
||||||
|
return Promise.reject('登录已过期')
|
||||||
|
} else {
|
||||||
|
config.headers.Authorization = `Bearer ${store.getters.token}` // 在请求头添加token
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return config
|
return config
|
||||||
}, err => {
|
}, err => {
|
||||||
@ -26,6 +39,12 @@ service.interceptors.request.use(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// 校验时间戳函数
|
||||||
|
const checkTimeout = () => {
|
||||||
|
const loginTimeStamp = getTimeStamp()
|
||||||
|
const nowTimeStamp = Date.now()
|
||||||
|
return nowTimeStamp - loginTimeStamp > timeout
|
||||||
|
}
|
||||||
// response interceptor
|
// response interceptor
|
||||||
// service.interceptors.response.use(
|
// service.interceptors.response.use(
|
||||||
// /**
|
// /**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user