优化token机制

develop
pnoker 4 years ago
parent 30f0e1177a
commit 5e7c5cf3cc

@ -14,11 +14,12 @@ export const generateToken = (user) => request({
data: user
});
export const checkTokenValid = (user, token) => request({
export const checkTokenValid = (user, salt, token) => request({
url: 'user_api/auth/token/check',
method: 'get',
params: {
username: user,
salt,
token
}
});

@ -22,6 +22,7 @@ axios.defaults.validateStatus = function (status) {
axios.interceptors.request.use(config => {
NProgress.start();
config.headers['Content-Type'] = 'application/json';
config.headers['X-Auth-Salt'] = getStore({name: 'salt'}) || '';
config.headers['X-Auth-User'] = getStore({name: 'user'}) || '';
config.headers['X-Auth-Token'] = getStore({name: 'token'}) || '';
return config;

@ -35,12 +35,12 @@ router.beforeEach((to, from, next) => {
if (meta.isAuth !== true || from.name === 'login') {
next();
} else {
const token = getStore({name: 'token'}), user = getStore({name: 'user'});
const token = getStore({name: 'token'}), salt = getStore({name: 'salt'}), user = getStore({name: 'user'});
if ('' === token || undefined === token || '' === user || undefined === user) {
next({path: '/login'});
return;
}
checkTokenValid(user, token).then(res => {
checkTokenValid(user, salt, token).then(res => {
if (res.ok) {
next();
} else {

@ -4,6 +4,7 @@ import {cancelToken, generateSalt, generateToken} from '@/api/user'
const user = {
state: {
salt: getStore({name: 'salt'}) || '',
user: getStore({name: 'user'}) || '',
token: getStore({name: 'token'}) || '',
},
@ -11,6 +12,7 @@ const user = {
GenerateSalt({commit}, name) {
return new Promise((resolve, reject) => {
generateSalt(name).then(res => {
commit('SET_SALT', res.data);
commit('SET_USER', name);
resolve(res.data);
}).catch(error => {
@ -36,6 +38,7 @@ const user = {
ClearToken({commit}) {
return new Promise((resolve, reject) => {
cancelToken(getStore({name: 'user'})).then((res) => {
commit('REMOVE_SALT');
commit('REMOVE_USER');
commit('REMOVE_TOKEN');
resolve(res);
@ -46,6 +49,14 @@ const user = {
}
},
mutations: {
SET_SALT: (state, salt) => {
state.salt = salt;
setStore({name: 'salt', content: state.salt});
},
REMOVE_SALT: (state) => {
state.salt = '';
removeStore({name: 'salt'});
},
SET_USER: (state, user) => {
state.user = user;
setStore({name: 'user', content: state.user});

Loading…
Cancel
Save