张成从小就帅
张成从小就帅
  • 发布:2020-11-16 11:43
  • 更新:2020-11-17 18:04
  • 阅读:3091

uni-app有没有类似vue路由守卫的功能

分类:uni-app

我希望能拦截到路由跳转,以此来做一些登录的验证,就像vue的前置守卫。

如果没有守卫的话,有没有比较成熟的替代方案。

2020-11-16 11:43 负责人:无 分享
已邀请:
DCloud_uniCloud_JSON

DCloud_uniCloud_JSON

建议方案:嵌套方法封装ajax方法,根据响应体来判断是否需要执行跳转到登录页面的逻辑,另外这样做可以:根据响应体更新本地token,请求体统一规范。设计好ajax_before和ajax_after。

function ajax(_url,_data,callback){  
      var url = 'https://xxx.com/api/'+_url;  
      uni.request({  
            url: url,  
            dataType:'json',  
            data:_data,  
            header: {  
                "user_id" : uni.getStorageSync('user_id'),  
                "token"   : uni.getStorageSync('token'),  
                "content-type":'application/x-www-form-urlencoded',  
            },  
            success: (e) => {  
                const res = e.data;               
                switch (e.statusCode){  
                    case 2000:  
                        callback(res.data);  
                        break;  
                    case 4001:  
                        uni.navigateTo({  
                            url:'/pages/common/login/login',  
                            complete(e){  
                                console.log(e);  
                            }  
                        })  
                        break;  
                    case 2001:  
                        //其他逻辑。。。。  
                        break;  
                        ...//更多逻辑,如系统维护中、该接口已经废弃请更新app,然后跳转到更新app页面等  
                        //注意switch case等方式比用if性能更好。  
                    default:  
                        break;  
                }  
            }  
        })  
    }

该问题目前已经被锁定, 无法添加新回复