uniapp全局拦截之uni.addInterceptor

这篇具有很好参考价值的文章主要介绍了uniapp全局拦截之uni.addInterceptor。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这个就很让人无语。。。。试了几次发现首次进入页面不拦截,准备做一个uniapp一进来判断授权的情况,但是这个只有第一次之后才会触发(因为我做的是微信公众号的H5页面的分享出去所以会需要首次进入拦截,如果对于首次登录拦截没有要求的可见最下边代码)。。分了两种情况

  1. 在需要分享出去的页面onload中做了是否有token的判断

onLoad(e) {
            console.log(333)
            console.log(e, 'eeeeeeejinxing')
            console.log(e.myid, 'e.myid')
            console.log(e.activityId, 'e.activityId')
            console.log(e.id)
            if (e.myid || e.activityId) {
                this.shareId = e.myid;
                let token = localStorage.getItem('token');
                console.log("1111");
                console.log(token);
                if (token) {
                    console.log('token')
                    this.user(e.activityId)
                } else {
                    console.log('notoken')
                    this.getWechatCode(e.activityId);
                }
                console.log('1.111')
                // this.being(e.activityId)        
                return
            } else {
                console.log('2222')
                // this.uid = JSON.parse(localStorage.getItem('userInfo')).id
                // console.log(this.uid, 'uididddd')
                this.being(e.id)
                this.activityId = e.id;
            }
            // this.share()
            //uid分享出去的人的id id是活动id 
},
  1. 在app.vue中的onLaunch中以下代码。直接一进页面判断有没有token 没有就强制跳转到首页(我的获取微信授权的在首页获取 没有做登录页)跳转需要区分是否是tabbar页面

let token = uni.getStorageSync('token')
            if (token) {

            } else {
                uni.reLaunch({
                    url: "/pages/tab/index",
                    success: () => {

                    }
                })
}

其实还有好几种 。比如vuex ,或者把登录的代码片段封装起来 在main.js中mixin混入。不过这两种都还没试。其实这两种还是不如路由拦截来的方便。。。但是这个uniapp的拦截器很鸡肋,而且用不了vue的router.beforeEach......

===================================

其实如果对首次登录拦截没有要求的话。可在App.vue的onLaunch中写,

(也是用的别人代码 侵权联系我 删)

let needLogin = [
                "/pages/tab/index",
]
            let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
            list.forEach(item => { //用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
                console.log(item,'router list item')
                uni.addInterceptor(item, {
                    invoke(e) { // 调用前拦截
                        //获取用户的token
                        console.log(e,'routerjs invoke')
                        const token = localStorage.getItem('token')
                        //获取当前页面路径(即url去掉"?"和"?"后的参数)
                        console.log(token,'router index token')
                        const url = e.url.split('?')[0]
                        console.log(url,'router index url')

                        console.log(needLogin.includes(url))
                        //判断要打开的页面是否需要验证登录
                        if (needLogin.includes(url) && token == '') {
                            uni.showToast({
                                title: '该页面需要登录才能访问,请先登录',
                                icon: 'none'
                            })
                            uni.navigateTo({
                                url: "/pages/login/login"
                            })
                            return false
                        }


                        return true
                    },
                    fail(err) { // 失败回调拦截 
                        console.log(err);
                    },
                })
})

也可以新建个router/index.js文件写。在main.js中引入文章来源地址https://www.toymoban.com/news/detail-511075.html

uniapp全局拦截之uni.addInterceptor

到了这里,关于uniapp全局拦截之uni.addInterceptor的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot的全局异常拦截

    在 Spring Boot 中,可以通过使用 @ControllerAdvice 注解和 @ExceptionHandler 注解来实现全局异常拦截。 @RestControllerAdvice 是 Spring Framework 提供的注解,用于定义全局异常处理类,并且结合 @ExceptionHandler 注解来处理异常。与 @ControllerAdvice 不同的是, @RestControllerAdvice 默认情况下会将返回

    2024年02月04日
    浏览(30)
  • 小程序静默登录-登录拦截实现方案【全局loginPromis加页面拦截】

    用户进入小程序访问所有页面运行onload、onShow、onReady函数时保证业务登录态是有效的 由于小程序的启动流程中,页面级和组件级的生命周期函数都不支持异步阻塞;因此会造成一个情况,app.onLaunch或者app.onShow中发起的wx.login还没有成功的时候,页面级的生命周期函数已经向

    2024年02月03日
    浏览(32)
  • GateWay自定义网关全局拦截

    在com.xxxxa.gateway.filter包下创建 是在网关下面操作: 网关的包里创建: 定义方式是非常简单,只需实现 GlobalFilter 接口 —————————————————————————————————————————————— 在filter中编写自定义逻辑,可以实现下列功能: 登

    2024年02月10日
    浏览(25)
  • 微信小程序全局路由拦截

    略 目前微信小程序没有全局路由拦截。要想实现全局路由拦截,需要自己进行扩充。具体参考这里:微信小程序–路由拦截器。 实现思路: 替换Page的参数对象的onShow或onLoad方法。 在替换的onShow或onLoad方法中判断是否已经登录。 将替换后的参数对象传给Page。 实现思路: 使

    2024年02月11日
    浏览(31)
  • axios全局路由拦截的设置方法

    一个项目中如果http请求发生了错误/异常,比如返回码4xx(表示没有授权,登录过期等),我们希望能够在axios在第一时间就能拦截获取到,然后直接提示报错的错误信息,而不是在发起请求的地方,单独去做判断,这样效率太低。 所以这个时候,axios全局路由拦截就登场了:

    2024年02月07日
    浏览(25)
  • axios不经过全局拦截器策略

    项目中使用的axios请求通常会根据项目情况进行请求拦截request和响应拦截response设置,比如对响应拦截的值具体值返回给调用请求部分直接使用 如果一个请求接口不需要使用这个拦截器,axios没有跳过拦截器等的设置,此时只需要创建一个新的axios实例进行使用即可 使用原始

    2024年02月01日
    浏览(32)
  • uni-app路由拦截

    新建一个auth.js /**  * @description 权限存储函数  */ const authorizationKey = \\\'Authorization\\\' export function getAuthorization() {   return uni.getStorageSync(authorizationKey) } export function setAuthorization(authorization) {   return uni.setStorageSync(authorizationKey, authorization) } export function removeAuthorization(authorization) {  

    2024年02月15日
    浏览(25)
  • SpringCloudGateway过滤器(全局认证、IP拦截、请求参数过滤、响应参数过滤)

    全局过滤器(认证) IP网关过滤器 请求参数网关过滤器

    2024年02月14日
    浏览(28)
  • SpringCloud GateWay网关通过全局拦截器GlobalFilter实现API日志

    产品经理突然找到我说,咱们这个产品貌似没有实现之前旧的系统平台操作日志了;希望我尽快实现这个需求,以应对一些检查;因为时间关系再加上人员问题,跟我原先规划得有些背道而驰 1.写一个AOP日志Starter,再需要的模块中引入,对应方法去标记注解,工程量比较大,

    2024年02月11日
    浏览(42)
  • vue全家桶进阶之路46:Vue3 Axios拦截器和globalProperties全局设置

    在Vue.js 3中,使用Axios与Vue.js 2.x中类似,但是需要进行一些修改和更新,下面是Vue.js 3中Axios的定义和使用方式: 首先,你需要安装Axios和Vue.js 3.x,可以使用npm或yarn等包管理工具安装: 然后,在你的Vue.js 3应用程序中,你可以使用以下代码来导入和使用Axios: 上面的代码使用

    2023年04月20日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包