axios.config.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import axios, { AxiosError, AxiosResponse } from 'axios'
  2. import store from '@/store/index'
  3. export default function axiosConfig() {
  4. axios.defaults.withCredentials = true
  5. axios.interceptors.response.use(
  6. function(response) {
  7. if (process.env.NODE_ENV === 'development') {
  8. console.log('[AXIOS] response value: ', response)
  9. }
  10. const responseData = response.data
  11. if (responseData.code === '00000') {
  12. return Promise.resolve(response)
  13. } else {
  14. console.log('reject')
  15. if (responseData.code === 'A0223' || responseData.code === 'A0230') {
  16. jumpToLogin()
  17. }
  18. return Promise.reject(response)
  19. }
  20. },
  21. function(error) {
  22. if (process.env.NODE_ENV === 'development') {
  23. console.error('[AXIOS] response error: ', error.response)
  24. }
  25. if (error.response) {
  26. if (error.response.status === 401) {
  27. jumpToLogin()
  28. }
  29. return Promise.reject(error.response)
  30. }
  31. return Promise.reject(error)
  32. }
  33. )
  34. axios.interceptors.request.use(
  35. function(config) {
  36. if (process.env.NODE_ENV === 'development') {
  37. console.log('[AXIOS] request config: ', config)
  38. }
  39. if (store.state.token) {
  40. config.headers = {
  41. Authorization: store.state.token,
  42. ...(config.headers ?? {})
  43. }
  44. }
  45. return config
  46. },
  47. // Do something with request error
  48. function(error) {
  49. if (process.env.NODE_ENV === 'development') {
  50. console.error('[AXIOS] request error: ', error)
  51. }
  52. return Promise.reject(error)
  53. }
  54. )
  55. }
  56. axiosConfig()
  57. const portal = 'http://p.seec.seecoder.cn'
  58. export const getLoginUrl = () => {
  59. const location = window.location
  60. return `${portal}/interaction?client_id=seec-mooc&redirect_uri=${encodeURIComponent(
  61. location.origin + '/'
  62. )}&scope=openid`
  63. }
  64. /**
  65. * 跳转到登陆界面
  66. */
  67. export const jumpToLogin = () => {
  68. window.location.href = getLoginUrl()
  69. }