fix refresh token

pull/59/head
smallwei 7 years ago
parent 503bcf436a
commit d14be8abff
  1. 2
      src/api/user.js
  2. 2
      src/config/website.js
  3. 46
      src/page/index/index.vue
  4. 50
      src/store/modules/user.js

@ -1,5 +1,5 @@
import request from '@/router/axios';
import {baseUrl} from '@/config/env';
import { baseUrl } from '@/config/env';
export const loginByUsername = (tenantCode, username, password, type) => request({
url: '/api/blade-auth/oauth/token',

@ -10,7 +10,7 @@ export default {
clientSecret: 'saber_secret', // 客户端密钥
tenantMode: true, // 是否开启租户模式
lockPage: '/lock',
tokenTime: 1500,
tokenTime: 7200,
//http的status默认放行不才用统一处理的,
statusWhiteList: [],
//配置首页不可关闭

@ -3,25 +3,25 @@
:class="{'avue--collapse':isCollapse}">
<div class="avue-header">
<!-- 顶部导航栏 -->
<top/>
<top />
</div>
<div class="avue-layout">
<div class="avue-left">
<!-- 左侧导航栏 -->
<sidebar/>
<sidebar />
</div>
<div class="avue-main">
<!-- 顶部标签卡 -->
<tags/>
<tags />
<!-- 主体视图层 -->
<el-scrollbar style="height:100%">
<keep-alive>
<router-view class="avue-view"
v-if="$route.meta.keepAlive"/>
v-if="$route.meta.keepAlive" />
</keep-alive>
<router-view class="avue-view"
v-if="!$route.meta.keepAlive"/>
v-if="!$route.meta.keepAlive" />
</el-scrollbar>
</div>
@ -38,15 +38,15 @@
</template>
<script>
import {mapGetters} from "vuex";
import tags from "./tags";
import top from "./top/";
import sidebar from "./sidebar/";
import admin from "@/util/admin";
// import { validatenull } from "@/util/validate";
// import { calcDate } from "@/util/date.js";
// import { getStore } from "@/util/store.js";
export default {
import { mapGetters } from "vuex";
import tags from "./tags";
import top from "./top/";
import sidebar from "./sidebar/";
import admin from "@/util/admin";
import { validatenull } from "@/util/validate";
import { calcDate } from "@/util/date.js";
import { getStore } from "@/util/store.js";
export default {
components: {
top,
tags,
@ -82,13 +82,17 @@
this.$store.commit("SET_SCREEN", admin.getScreen());
}, 0);
};
this.$store.dispatch("FlowRoutes").then(() => {
});
this.$store.dispatch("FlowRoutes").then(() => {});
},
// token
refreshToken() {
/*this.refreshTime = setInterval(() => {
if (!this.refreshLock) {
this.refreshTime = setInterval(() => {
const token = getStore({
name: "token",
debug: true
});
const date = calcDate(token.datetime, new Date().getTime());
if (validatenull(date)) return;
if (date.seconds >= this.website.tokenTime && !this.refreshLock) {
this.refreshLock = true;
this.$store
.dispatch("RefeshToken")
@ -99,8 +103,8 @@
this.refreshLock = false;
});
}
}, this.website.tokenTime * 1000);*/
}, 1000);
}
}
};
};
</script>

@ -1,10 +1,10 @@
import {setToken, setRefreshToken, removeToken} from '@/util/auth'
import {Message} from 'element-ui'
import {setStore, getStore} from '@/util/store'
import {isURL, validatenull} from '@/util/validate'
import {deepClone} from '@/util/util'
import { setToken, setRefreshToken, removeToken } from '@/util/auth'
import { Message } from 'element-ui'
import { setStore, getStore } from '@/util/store'
import { isURL, validatenull } from '@/util/validate'
import { deepClone } from '@/util/util'
import webiste from '@/config/website'
import {loginByUsername, getUserInfo, getMenu, getTopMenu, logout, refeshToken, getButtons} from '@/api/user'
import { loginByUsername, getUserInfo, getMenu, getTopMenu, logout, refeshToken, getButtons } from '@/api/user'
function addPath(ele, first) {
@ -32,17 +32,17 @@ function addPath(ele, first) {
const user = {
state: {
userInfo: getStore({name: 'userInfo'}) || [],
permission: getStore({name: 'permission'}) || {},
userInfo: getStore({ name: 'userInfo' }) || [],
permission: getStore({ name: 'permission' }) || {},
roles: [],
menu: getStore({name: 'menu'}) || [],
menu: getStore({ name: 'menu' }) || [],
menuAll: [],
token: getStore({name: 'token'}) || '',
refreshToken: getStore({name: 'refreshToken'}) || '',
token: getStore({ name: 'token' }) || '',
refreshToken: getStore({ name: 'refreshToken' }) || '',
},
actions: {
//根据用户名登录
LoginByUsername({commit}, userInfo) {
LoginByUsername({ commit }, userInfo) {
return new Promise((resolve) => {
loginByUsername(userInfo.tenantCode, userInfo.username, userInfo.password, userInfo.type).then(res => {
const data = res.data;
@ -62,7 +62,7 @@ const user = {
})
})
},
GetButtons({commit}) {
GetButtons({ commit }) {
return new Promise((resolve) => {
getButtons().then(res => {
const data = res.data.data;
@ -72,7 +72,7 @@ const user = {
})
},
//根据手机号登录
LoginByPhone({commit}, userInfo) {
LoginByPhone({ commit }, userInfo) {
return new Promise((resolve) => {
loginByUsername(userInfo.phone, userInfo.code).then(res => {
const data = res.data.data;
@ -83,7 +83,7 @@ const user = {
})
})
},
GetUserInfo({commit}) {
GetUserInfo({ commit }) {
return new Promise((resolve, reject) => {
getUserInfo().then((res) => {
const data = res.data.data;
@ -95,9 +95,9 @@ const user = {
})
},
//刷新token
RefeshToken({state, commit}) {
RefeshToken({ state, commit }) {
return new Promise((resolve, reject) => {
refeshToken(state.refreshToken).then(res => {
refeshToken(state.refreshToken, state.userInfo).then(res => {
const data = res.data;
commit('SET_TOKEN', data.access_token);
commit('SET_REFRESH_TOKEN', data.refresh_token);
@ -108,7 +108,7 @@ const user = {
})
},
// 登出
LogOut({commit}) {
LogOut({ commit }) {
return new Promise((resolve, reject) => {
logout().then(() => {
commit('SET_TOKEN', '')
@ -124,7 +124,7 @@ const user = {
})
},
//注销session
FedLogOut({commit}) {
FedLogOut({ commit }) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
commit('SET_MENU', [])
@ -144,7 +144,7 @@ const user = {
})
},
//获取系统菜单
GetMenu({commit, dispatch}, parentId) {
GetMenu({ commit, dispatch }, parentId) {
return new Promise(resolve => {
getMenu(parentId).then((res) => {
const data = res.data.data
@ -163,20 +163,20 @@ const user = {
SET_TOKEN: (state, token) => {
setToken(token)
state.token = token;
setStore({name: 'token', content: state.token, type: 'session'})
setStore({ name: 'token', content: state.token, type: 'session' })
},
SET_REFRESH_TOKEN: (state, refreshToken) => {
setRefreshToken(refreshToken)
state.refreshToken = refreshToken;
setStore({name: 'refreshToken', content: state.refreshToken, type: 'session'})
setStore({ name: 'refreshToken', content: state.refreshToken, type: 'session' })
},
SET_USERIFNO: (state, userInfo) => {
state.userInfo = userInfo;
setStore({name: 'userInfo', content: state.userInfo})
setStore({ name: 'userInfo', content: state.userInfo })
},
SET_MENU: (state, menu) => {
state.menu = menu
setStore({name: 'menu', content: state.menu, type: 'session'})
setStore({ name: 'menu', content: state.menu, type: 'session' })
},
SET_MENU_ALL: (state, menuAll) => {
state.menuAll = menuAll;
@ -207,7 +207,7 @@ const user = {
result.forEach(ele => {
state.permission[ele] = true;
});
setStore({name: 'permission', content: state.permission, type: 'session'})
setStore({ name: 'permission', content: state.permission, type: 'session' })
}
}

Loading…
Cancel
Save