axios.config.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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: AxiosResponse) {
  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: AxiosError) {
  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 = process.env.portalUrl
  58. const portal = 'http://p.seec.seecoder.cn'
  59. export const getLoginUrl = () => {
  60. console.log(portal)
  61. const location = window.location
  62. return `${portal}/api/interaction?client_id=seec-mooc&redirect_uri=${encodeURIComponent(
  63. location.origin + '/'
  64. )}&scope=openid`
  65. }
  66. /**
  67. * 跳转到登陆界面
  68. */
  69. export const jumpToLogin = () => {
  70. window.location.href = getLoginUrl()
  71. }