http.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import axios from 'axios'
  2. import {history} from './router.config'
  3. const replaceLogin = () => history.replace('/login')
  4. let token = sessionStorage.getItem('token')
  5. token || replaceLogin()
  6. export const baseURL = process.env.NODE_ENV === 'development' ? '/api' : '/api'
  7. axios.defaults.baseURL = baseURL
  8. axios.interceptors.request.use(request => {
  9. // if (request.url === '/login' || request.url === '/logout') {
  10. // request.baseURL = process.env.NODE_ENV === 'development' ? '/test': ''
  11. // }
  12. if (!token && request.url !== '/admin/login') {
  13. replaceLogin()
  14. return Promise.reject('未登录无法请求')
  15. }
  16. request.headers.token = token
  17. return request
  18. })
  19. axios.interceptors.response.use(response => {
  20. if (response.data.code === 401 || response.data.status === 5001 || response.data.code === 5001) {
  21. sessionStorage.removeItem('token')
  22. token = null;
  23. replaceLogin()
  24. throw new Error('当前用户未登录')
  25. }
  26. return response
  27. })
  28. export const setToken = (t: any) => {
  29. token = t
  30. sessionStorage.setItem('token', t)
  31. }
  32. export const removeToken = (t: any) => {
  33. token = null
  34. sessionStorage.removeItem('token')
  35. }
  36. export default axios