auth.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // 遵守pc与移动的命名规范,移动端前面加 m.,就会自动拼接拦截路径,自动响应式匹配pc/移动
  2. const mobilepath = [
  3. '/user/m_user',
  4. ]
  5. const pcpath = [
  6. '/',
  7. ]
  8. export default function ({ isServer, req, redirect, route }) {
  9. // 这两个只有不同项目不同端口才用得上
  10. // let pcOrigin = 'http://sincelocal.aupup.com:9003'
  11. // let mobileOrigin = 'http://sincelocal.aupup.com:9004'
  12. // console.log('navigator',navigator)
  13. let isMobile = ua => {
  14. return !!ua.match(/AppleWebKit.*Mobile.*/)
  15. }
  16. let userAgent = req ? req.headers['user-agent'] : navigator.userAgent || ''
  17. if(!req) return
  18. // http不能直接写死,要取出来,可能是https
  19. const request=req?.headers?.referer?.split('://')[0]||'http';
  20. // console.log(request,'当前的请求头');
  21. // 如果是移动端,但是确访问了pc的路径
  22. if (isMobile(userAgent) && pcpath.includes(route.path.toLowerCase())) {
  23. console.log('重定向到移动端', req.headers.host, route.fullPath)
  24. return redirect(
  25. `${request}://${req.headers.host}` +
  26. `/m.${route.fullPath.substring(1, route.fullPath.length)}`
  27. )
  28. } else if (
  29. !isMobile(userAgent) &&
  30. mobilepath.includes(route.path.toLowerCase())
  31. ) {
  32. // 如果是pc进了移动
  33. // 重定向到pc端
  34. console.log('重定向到PC端', req.headers.host, route.fullPath)
  35. return redirect(
  36. `${request}://${req.headers.host}` +
  37. `/${route.fullPath.substring(1, route.fullPath.length)}`
  38. )
  39. }
  40. // return isMobile(userAgent) ? '' : redirect(pcOrigin + route.fullPath)
  41. // 使用redirect 重定向到外链需要加上前缀:http / https
  42. }