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.

36 lines
1.1 KiB

8 months ago
  1. let needLogin = [
  2. // "/pages/user/user",
  3. ]
  4. let list = [];
  5. // let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
  6. list.forEach(item => { //用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
  7. console.log(item, 'router list item')
  8. uni.addInterceptor(item, {
  9. invoke(e) { // 调用前拦截
  10. //获取用户的token
  11. console.log(e, 'routerjs invoke')
  12. const token = localStorage.getItem('token')
  13. //获取当前页面路径(即url去掉"?"和"?"后的参数)
  14. console.log(token, 'router index token')
  15. const url = e.url.split('?')[0]
  16. console.log(url, 'router index url')
  17. console.log(needLogin.includes(url))
  18. //判断要打开的页面是否需要验证登录
  19. if (needLogin.includes(url) && !token) {
  20. uni.showToast({
  21. title: '该页面需要登录才能访问,请先登录',
  22. icon: 'none'
  23. })
  24. uni.navigateTo({
  25. url: "/pages/login/login"
  26. })
  27. return false
  28. }
  29. return true
  30. },
  31. fail(err) { // 失败回调拦截
  32. console.log(err);
  33. },
  34. })
  35. })