From 312b662c0aa821a09ffa4ea1020ab431b46d1da0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=BF=94=E5=AE=87-=E6=97=85=E7=AE=A1=E5=AE=B6?= <153298343@qq.com> Date: Mon, 5 Sep 2022 13:22:43 +0800 Subject: [PATCH] up --- src/api/user.js | 87 +++++++++-------- src/utils/request.js | 200 ++++++++++++++++++++------------------ src/views/login/index.vue | 21 +++- 3 files changed, 172 insertions(+), 136 deletions(-) diff --git a/src/api/user.js b/src/api/user.js index ecb1476..bbd0b62 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -1,42 +1,47 @@ -import request from '@/utils/request' - -export function login(data) { - return request({ - url: '/api/admin/auth/login', - method: 'post', - data - }) -} - -export function loginOss(data) { - return request({ - url: '/api/admin/auth/oss-login', - method: 'post', - data - }) -} - - - -export function getInfo(token) { - return request({ - url: '/api/admin/auth/me', - method: 'post', - params: { token } - }) -} - -export function logout() { - return request({ - url: '/api/admin/auth/logout', - method: 'post' - }) -} - -export function getAuthMenu(token) { - return request({ - url: '/api/admin/auth/permissions', - method: 'get', - params: { token } - }) +import request from '@/utils/request' + +export function login(data) { + return request({ + url: '/api/admin/auth/login', + method: 'post', + data + }) +} + +export function loginOss(data) { + return request({ + url: '/api/admin/auth/oss-login', + method: 'post', + data, + noloading: true + }) +} + + + +export function getInfo(token) { + return request({ + url: '/api/admin/auth/me', + method: 'post', + params: { + token + } + }) +} + +export function logout() { + return request({ + url: '/api/admin/auth/logout', + method: 'post' + }) +} + +export function getAuthMenu(token) { + return request({ + url: '/api/admin/auth/permissions', + method: 'get', + params: { + token + } + }) } diff --git a/src/utils/request.js b/src/utils/request.js index 48e452c..ab2f96d 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,94 +1,108 @@ -import axios from 'axios' -import { MessageBox, Message ,Loading} from 'element-ui' -import store from '@/store' -import { getToken } from '@/utils/auth' -let loading; - -// create an axios instance -const service = axios.create({ - baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url - // withCredentials: true, // send cookies when cross-domain requests - timeout: 500000 // request timeout -}) - -// request interceptor -service.interceptors.request.use( - config => { - // do something before request is sent - loading = Loading.service({ - lock:true, - background:"rgba(0,0,0,0.4)", - text:"正在加载中..." - }) - if (store.getters.token) { - // let each request carry token - // ['X-Token'] is a custom headers key - // please modify it according to the actual situation - //config.headers['X-Token'] = getToken(); - - config.headers['Authorization'] ="Bearer "+getToken() - } - return config - }, - error => { - // do something with request error - console.log(error) // for debug - return Promise.reject(error) - } -) - -// response interceptor -service.interceptors.response.use( - /** - * If you want to get http information such as headers or status - * Please return response => response - */ - - /** - * Determine the request status by custom code - * Here is just an example - * You can also judge the status by HTTP Status Code - */ - response => { - loading.close() - const res = response.data - - // if the custom code is not 20000, it is judged as an error. - if (res.errcode) { - Message({ - message: res.errmsg || 'Error', - type: 'error', - duration: 5 * 1000 - }) - - // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; - if (res.errcode === 50008 || res.errcode === 50012 || res.errcode === 50014) { - // to re-login - MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { - confirmButtonText: 'Re-Login', - cancelButtonText: 'Cancel', - type: 'warning' - }).then(() => { - store.dispatch('user/resetToken').then(() => { - location.reload() - }) - }) - } - return Promise.reject(new Error(res.errmsg || 'Error')) - } else { - return res - } - }, - error => { - loading.close() - console.log('err' + error) // for debug - Message({ - message: error.message, - type: 'error', - duration: 5 * 1000 - }) - return Promise.reject(error) - } -) - +import axios from 'axios' +import { + MessageBox, + Message, + Loading +} from 'element-ui' +import store from '@/store' +import { + getToken +} from '@/utils/auth' +let loading; + +// create an axios instance +const service = axios.create({ + baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url + // withCredentials: true, // send cookies when cross-domain requests + timeout: 500000 // request timeout +}) + +// request interceptor +service.interceptors.request.use( + config => { + + if (!config.noloading) { + // do something before request is sent + loading = Loading.service({ + lock: true, + background: "rgba(0,0,0,0.4)", + text: "正在加载中..." + }) + } + if (store.getters.token) { + // let each request carry token + // ['X-Token'] is a custom headers key + // please modify it according to the actual situation + //config.headers['X-Token'] = getToken(); + + config.headers['Authorization'] = "Bearer " + getToken() + } + return config + }, + error => { + // do something with request error + console.log(error) // for debug + return Promise.reject(error) + } +) + +// response interceptor +service.interceptors.response.use( + /** + * If you want to get http information such as headers or status + * Please return response => response + */ + + /** + * Determine the request status by custom code + * Here is just an example + * You can also judge the status by HTTP Status Code + */ + response => { + if (loading) { + loading.close() + } + const res = response.data + + // if the custom code is not 20000, it is judged as an error. + if (res.errcode) { + Message({ + message: res.errmsg || 'Error', + type: 'error', + duration: 5 * 1000 + }) + + // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; + if (res.errcode === 50008 || res.errcode === 50012 || res.errcode === 50014) { + // to re-login + MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', + 'Confirm logout', { + confirmButtonText: 'Re-Login', + cancelButtonText: 'Cancel', + type: 'warning' + }).then(() => { + store.dispatch('user/resetToken').then(() => { + location.reload() + }) + }) + } + return Promise.reject(new Error(res.errmsg || 'Error')) + } else { + return res + } + }, + error => { + if (loading) { + loading.close() + } + console.log('err' + error) // for debug + Message({ + message: error.message, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) + } +) + export default service diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 75a3dfc..7f6b26c 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -1,5 +1,5 @@