53645111
53645111
  • 发布:2023-09-25 00:20
  • 更新:2023-09-25 00:20
  • 阅读:408

【新人分享】uni-starter实现登录后返回登录前页面的方法

分类:uniCloud

common/appInit.js内新建拦截器

uni.addInterceptor('navigateTo', {  
        invoke(args) {  
            let redirectUrl = ''  
            if (uni.getStorageSync('uniIdRedirectUrl2')) {  
                redirectUrl = '?uniIdRedirectUrl=' + decodeURIComponent(uni.getStorageSync(  
                    'uniIdRedirectUrl2'))  
                console.log("缓存页 1->" + uni.getStorageSync('uniIdRedirectUrl2'))  
            } else {  
                console.log("uniIdRedirectUrl不存在")  
            }  

            let pages = getCurrentPages() //获取加载的页面  
            let newPages = pages.map(item => item.route)  
            let nowUrl = args.url //这个是当前页面  
            let lastPage = newPages.length && newPages[newPages.length - 1] //这个是上一个页面  

            //当 当前页面不是登录页时,缓存当前页    当 当前页是登录页,上一页不是登录页时,缓存上一页  
            if (!nowUrl.includes("/login")) {  
                uni.setStorageSync('uniIdRedirectUrl2', '/' + nowUrl);  
            } else if (!lastPage.includes("/login")) {  
                uni.setStorageSync('uniIdRedirectUrl2', '/' + lastPage);  
            }  

            console.log("缓存页 2->" + uni.getStorageSync('uniIdRedirectUrl2'))  

            //当 当前页是登录页 且页面不含上页信息时 加上返回页地址  
            if (nowUrl.includes("/login") && !nowUrl.includes("?uniIdRedirectUrl=")) {  
                console.log("遇到login拼接新地址->" + uni.getStorageSync('uniIdRedirectUrl2'))  
                args.url = nowUrl + redirectUrl  
            }  
        },  
        success(args) {  
            console.log("success", args)  
        },  
        fail(err) {  
            console.log('interceptor-fail', err)  
        },  
        complete(res) {  
            console.log('interceptor-complete', res)  
        }  
    })

此方法用户名密码登录时有效,微信登录还没找到问题出在哪?有路过的高手请指教一下,免得我们新人苦苦摸索,谢谢啦

0 关注 分享

要回复文章请先登录注册