优化token机制

develop
pnoker 4 years ago
parent 30f0e1177a
commit 5e7c5cf3cc

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

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

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

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

Loading…
Cancel
Save