金币系统前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
888 B

1 month ago
  1. import axios from 'axios'
  2. const service = axios.create({
  3. baseURL: import.meta.env.VITE_API_BASE,
  4. timeout: 10000,
  5. headers: {
  6. 'Content-Type': 'application/json'
  7. }
  8. })
  9. // 请求拦截器
  10. service.interceptors.request.use(config => {
  11. const token = localStorage.getItem('token')
  12. if (token) {
  13. config.headers.Authorization = `Bearer ${token}`
  14. }
  15. return config
  16. }, error => {
  17. return Promise.reject(error)
  18. })
  19. // 响应拦截器
  20. service.interceptors.response.use(
  21. response => {
  22. return response
  23. },
  24. error => {
  25. const { response } = error
  26. if (response && response.status === 401) {
  27. const machineId = localStorage.getItem('machineId')
  28. localStorage.removeItem('token')
  29. window.location.href = `/login?machineId=${machineId}`
  30. return Promise.resolve({ needsLogin: true })
  31. }
  32. return Promise.reject(error)
  33. }
  34. )
  35. export default service