Browse Source

自动登录

develop
xuesinan 3 years ago
parent
commit
235e398946
  1. 15
      src/App.vue
  2. 3
      src/apis/index.js
  3. 4
      src/store/tall/user/index.js
  4. 12
      src/utils/axios.js

15
src/App.vue

@ -8,13 +8,14 @@
import { useStore } from 'vuex'; import { useStore } from 'vuex';
import { computed, watch } from 'vue'; import { computed, watch } from 'vue';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { getUserInfo } from 'apis';
import { message } from 'ant-design-vue';
const store = useStore(); const store = useStore();
const projectInfo = computed(() => store.state.projects.project); // const projectInfo = computed(() => store.state.projects.project); //
const sessionProject = sessionStorage.getItem('project'); // const sessionProject = sessionStorage.getItem('project'); //
// queryu token
const userString = sessionStorage.getItem('user'); const userString = sessionStorage.getItem('user');
const sessionToken = localStorage.getItem('token'); const sessionToken = localStorage.getItem('token');
@ -44,6 +45,7 @@ if (userString) {
if (sessionToken) { if (sessionToken) {
store.commit('user/setToken', sessionToken); store.commit('user/setToken', sessionToken);
getUser();
} }
// //
@ -57,6 +59,17 @@ setInterval(() => {
getPlugins(); getPlugins();
}, 60000); }, 60000);
// tokenuser
async function getUser() {
const token = `Bearer ${sessionToken}`;
try {
const res = await getUserInfo(token);
store.commit('user/setUser', res);
} catch (error) {
message.info(error || '用户信息获取失败');
}
}
// //
function getMemberList() { function getMemberList() {
const projectId = projectInfo.value.id; const projectId = projectInfo.value.id;

3
src/apis/index.js

@ -21,6 +21,9 @@ export const getToken = userId => http.get(`${tall}/users/userId`, { userId });
// 根据refreshToken重新获取token // 根据refreshToken重新获取token
export const getNewToken = refreshToken => http.get(`${tall}/users/refreshToken?refreshToken=${refreshToken}`); export const getNewToken = refreshToken => http.get(`${tall}/users/refreshToken?refreshToken=${refreshToken}`);
// 根据token重新获取user
export const getUserInfo = token => http.post(`${tall}/users/token`, { token });
// 登录api // 登录api
export const signIn = params => http.post(`${tall}/users/signin`, params); export const signIn = params => http.post(`${tall}/users/signin`, params);

4
src/store/tall/user/index.js

@ -31,7 +31,9 @@ export default {
setUser(state, user) { setUser(state, user) {
state.user = user; state.user = user;
if (user) { if (user) {
localStorage.setItem('token', user.token); if (user.token) {
localStorage.setItem('token', user.token);
}
sessionStorage.setItem('user', JSON.stringify(user)); sessionStorage.setItem('user', JSON.stringify(user));
} else { } else {
localStorage.removeItem('token'); localStorage.removeItem('token');

12
src/utils/axios.js

@ -13,7 +13,7 @@ const instance = Axios.create({
// request // request
instance.interceptors.request.use( instance.interceptors.request.use(
config => { config => {
const token = store.state.user.token || sessionStorage.getItem('token'); const token = store.state.user.token || localStorage.getItem('token');
if (token) { if (token) {
config.headers.Authorization = `Bearer ${token}`; config.headers.Authorization = `Bearer ${token}`;
} }
@ -37,8 +37,8 @@ instance.interceptors.response.use(
if (code === 200) { if (code === 200) {
if (tokenObj.token) { if (tokenObj.token) {
store.commit('user/setToken', tokenObj.token); store.commit('user/setToken', tokenObj.token);
sessionStorage.setItem('token', tokenObj.token); localStorage.setItem('token', tokenObj.token);
sessionStorage.setItem('refreshToken', tokenObj.refreshToken); localStorage.setItem('refreshToken', tokenObj.refreshToken);
} }
return resData || 1; return resData || 1;
@ -48,7 +48,7 @@ instance.interceptors.response.use(
store.commit('user/setCount', store.state.user.count - 1); store.commit('user/setCount', store.state.user.count - 1);
// 2、刷新token // 2、刷新token
const refreshToken = sessionStorage.getItem('refreshToken'); const refreshToken = localStorage.getItem('refreshToken');
const data = await store.dispatch('user/getTokenByRefreshToken', refreshToken); const data = await store.dispatch('user/getTokenByRefreshToken', refreshToken);
// 3、重新请求当前api // 3、重新请求当前api
@ -63,8 +63,8 @@ instance.interceptors.response.use(
} }
if (code === 401) { if (code === 401) {
// refreshToken过期 // refreshToken过期
sessionStorage.removeItem('token'); localStorage.removeItem('token');
sessionStorage.removeItem('refreshToken'); localStorage.removeItem('refreshToken');
store.commit('user/setUser', null); store.commit('user/setUser', null);
store.commit('user/setToken', ''); store.commit('user/setToken', '');
message.error(msg); message.error(msg);

Loading…
Cancel
Save