refreshToken

This commit is contained in:
shijing 2022-03-31 15:18:51 +08:00
parent e9cdb49787
commit e5ee1481de
6 changed files with 65 additions and 19 deletions

View File

@ -8,6 +8,14 @@ export function login(data) {
})
}
export function refreshToken(data) {
return request({
url: '/auth/token/refresh/',
method: 'post',
data
})
}
export function logout() {
return request({
url: '/auth/token/black/',

View File

@ -25,7 +25,7 @@
import { Navbar, Sidebar, AppMain,TagsView } from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapGetters } from 'vuex'
import { getToken } from '@/utils/auth' // get token from cookie
import { getToken,getRefresh } from '@/utils/auth' // get token from cookie
export default {
name: 'Layout',
components: {
@ -64,12 +64,14 @@ export default {
},
mounted() {
let hasToken = getToken();
/*debugger;
console.log(hasToken);*/
if (hasToken) {
this.refreshCountData();
this.refreshtoken();
this.$store.dispatch("user/getCount", {});
}else{
this.$router.push({name:'login'})
}
// this.refreshCountData();
// console.log('$store.state.user.refresh:'+this.$store.state.user.refresh);
},
methods: {
refreshCountData(){
@ -80,12 +82,23 @@ export default {
this.$store.dispatch("user/getCount", {});
}
},0)
},5000)
},50000)
},
refreshtoken(){
let refresh = getRefresh();
/* debugger;
console.log('refresh:'+refresh);
debugger;*/
// let refresh = this.$store.state.user.refresh;
this.timer = window.setInterval(() => {
if (refresh) {
this.$store.dispatch("user/refreshToken", refresh);
}
},3540000)
},
handleClickOutside() {
this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
},
gotoTicketPage(){
let path = this.$route.path;
if(path==='/workflow/ticket'){

View File

@ -2,6 +2,7 @@ const getters = {
sidebar: state => state.app.sidebar,
device: state => state.app.device,
token: state => state.user.token,
refresh: state => state.user.refresh,
avatar: state => state.user.avatar,
name: state => state.user.name,
perms: state => state.user.perms,

View File

@ -1,12 +1,14 @@
import { login, logout, getInfo } from '@/api/user'
import { getCount } from '@/api/workflow'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { refreshToken } from '@/api/user'
import { getToken, setToken, removeToken,getRefresh, setRefresh } from '@/utils/auth'
import { resetRouter } from '@/router'
const getDefaultState = () => {
return {
token: getToken(),
name: '',
refresh: getRefresh(),
avatar: '',
count: {},
perms: []
@ -22,6 +24,9 @@ const mutations = {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_REFRESH: (state, refresh) => {
state.refresh = refresh
},
SET_NAME: (state, name) => {
state.name = name
},
@ -44,9 +49,10 @@ const actions = {
login({ username: username.trim(), password: password }).then(response => {
const { data } = response;
commit('SET_TOKEN', data.access);
commit('SET_REFRESH', data.refresh);
setToken(data.access);
setRefresh(data.refresh);
resolve()
}).catch(error => {
reject(error)
})
@ -118,6 +124,21 @@ const actions = {
})
})
}
,
refreshToken({ commit },ref) {
return new Promise((resolve, reject) => {
refreshToken({refresh:ref}).then((res) => {
const { data } = res;
commit('SET_TOKEN', data.access);
// commit('SET_REFRESH', data.refresh);
setToken(data.access);
// setRefresh(data.refresh);
resolve()
}).catch(error => {
reject(error)
})
})
}
}
export default {

View File

@ -1,6 +1,7 @@
import Cookies from 'js-cookie'
const TokenKey = 'token'
const TokenKey = 'token';
const refreshKey = 'refresh';
export function getToken() {
return Cookies.get(TokenKey)
@ -13,13 +14,15 @@ export function setToken(token) {
export function removeToken() {
return Cookies.remove(TokenKey)
}
export function getRefresh() {
return Cookies.get(refreshKey)
}
export function setRefresh(refresh) {
return Cookies.set(refreshKey, refresh)
}
export function removeRefresh() {
return Cookies.remove(refreshKey)
}
// export function refreshToken() {
// let token = getToken()
// let data = {"token": token}
// return request({
// url: '/token/refresh/',
// method: 'post',
// data
// })
// }

View File

@ -73,7 +73,7 @@ service.interceptors.response.use(
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
store.dispatch('user/resetToken').then(() => {
store.dispatch('user/logout').then(() => {
location.reload()
})
})