Skip to content

Commit 0e77252

Browse files
committed
修复当token不存在的时候请求接口ui报错
1 parent b0cc1e8 commit 0e77252

File tree

6 files changed

+37
-12
lines changed

6 files changed

+37
-12
lines changed

src/components/app-header/AppHeader.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import {
4242
Mutation,
4343
namespace,
4444
} from 'vuex-class';
45-
import { OperatedProduct } from '@/config';
45+
import { currentUser, authToken } from '@/config';
4646
import { storage } from '@/utils';
4747
import { IViewState } from '@/store/view';
4848
@@ -55,12 +55,13 @@ export default class AppHeader extends Vue {
5555
private username: string = '';
5656
5757
private logout(): void {
58-
storage.removeItem(OperatedProduct);
58+
storage.removeItem(authToken);
59+
storage.removeItem(currentUser);
5960
this.$router.push({ name: 'login' });
6061
}
6162
6263
private mounted() {
63-
this.username = storage.getItem(OperatedProduct);
64+
this.username = storage.getItem(currentUser);
6465
}
6566
}
6667
</script>

src/config/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ export const authToken: string = 'token';
44
export const OperatedProduct = 'X-Operated-Product';
55
export const authMobile: string = '';
66
export const authEmail: string = 'auth-email';
7+
export const currentUser: string = 'current-user';

src/store/modules/user.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default {
1111
const { code, message, result } = await UserService.getAllUser();
1212
return axiosResult(result, code, message, true);
1313
} catch (e) {
14-
console.error(e);
14+
return e;
1515
}
1616
},
1717
},

src/utils/auth.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Vue from 'vue';
2-
import { OperatedProduct } from '@/config';
2+
import { authToken } from '@/config';
33
import { storage } from './storage';
44

55
export const auth = (
@@ -8,7 +8,7 @@ export const auth = (
88
next: (arg0: { name: string; query: { backUrl: any } }) => void,
99
) => {
1010
// 如果是要授权登录的且当前本地存储中不存在用户邮箱的跳转到登录页面
11-
if (!to.meta.unauth && !storage.getItem(OperatedProduct)) {
11+
if (!to.meta.unauth && !storage.getItem(authToken)) {
1212
Vue.prototype.$notify({
1313
title: '退出提示',
1414
message: '登录超时',

src/utils/axios-request.ts

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* @Company:
77
* @Date: 2019-08-16 16:57:42
88
* @LastEditors: 水痕
9-
* @LastEditTime: 2019-08-21 12:23:41
9+
* @LastEditTime: 2019-08-21 16:23:28
1010
*/
1111

1212
import axios from 'axios';
@@ -32,6 +32,10 @@ class AxiosRequest {
3232
);
3333
}
3434

35+
/**
36+
* 成功请求的方法
37+
* @param config
38+
*/
3539
private request(config: { [propsName: string]: any }) {
3640
// 配置请求头
3741
config.headers['X-Origin'] = 'admin-web';
@@ -49,18 +53,35 @@ class AxiosRequest {
4953
return config;
5054
}
5155

56+
/**
57+
* 失败请求的方法
58+
* @param rejection
59+
*/
5260
private requestError(rejection: { data: any }) {
5361
return this.useOrigin(rejection)
5462
? Promise.reject(rejection)
5563
: Promise.reject(rejection.data);
5664
}
5765

58-
private response(res: any) {
59-
return this.isPlainRequest(res.config.url) || this.useOrigin(res)
60-
? res
61-
: res.data;
66+
/**
67+
* 成功响应的方法
68+
* @param response
69+
*/
70+
private response(response: any) {
71+
if (response.status === 200 || response.status === 201) {
72+
return this.isPlainRequest(response.config.url) ||
73+
this.useOrigin(response)
74+
? Promise.resolve(response)
75+
: Promise.resolve(response.data);
76+
} else {
77+
return Promise.reject(response);
78+
}
6279
}
6380

81+
/**
82+
* 响应失败的方法(根据自己的业务逻辑写)
83+
* @param error
84+
*/
6485
private responseError(error: any) {
6586
if (error.response && error.response.status) {
6687
let $path;
@@ -82,6 +103,7 @@ class AxiosRequest {
82103
// 未登录则跳转登录页面,并携带当前页面的路径
83104
// 在登录成功后返回当前页面,这一步需要在登录页操作。
84105
case 401:
106+
console.log('你没有登录,请先登录');
85107
routers.replace({
86108
path: '/login',
87109
query: {

src/views/shared/login/Login.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
<script lang="ts">
4646
import { Component, Vue, Provide } from 'vue-property-decorator';
47-
import { authToken } from '@/config';
47+
import { authToken, currentUser } from '@/config';
4848
import { storage } from '@/utils';
4949
import axios from 'axios';
5050
@@ -62,6 +62,7 @@ export default class Login extends Vue {
6262
if (code === 0) {
6363
// 设置本地存储
6464
storage.setItem(authToken, token);
65+
storage.setItem(currentUser, this.loginForm.email);
6566
if (this.$route.query.backUrl) {
6667
this.$router.push((this.$route.query as any).backUrl);
6768
} else {

0 commit comments

Comments
 (0)