当前位置:首页 > uni-app

uniapp全局校验

2026-01-14 18:42:03uni-app

uniapp全局校验的实现方法

在uniapp中实现全局校验可以通过多种方式,主要包括拦截器、全局混入和自定义指令等方法。

使用请求拦截器进行校验

main.js中配置请求拦截器,对所有请求进行统一校验:

uniapp全局校验

// main.js
uni.addInterceptor('request', {
  invoke(args) {
    // 校验逻辑
    if (!checkTokenValid()) {
      uni.showToast({ title: '请先登录', icon: 'none' })
      return Promise.reject('未登录')
    }
    return args
  },
  fail(err) {
    console.error('请求失败', err)
  }
})

使用全局混入(mixin)

创建全局mixin文件并在main.js中引入:

// mixins/globalMixin.js
export default {
  methods: {
    $globalCheck() {
      if (!this.$store.getters.isLogin) {
        uni.showToast({ title: '请先登录', icon: 'none' })
        return false
      }
      return true
    }
  }
}

// main.js
import globalMixin from './mixins/globalMixin'
Vue.mixin(globalMixin)

页面路由拦截

pages.json中配置页面路由守卫:

uniapp全局校验

{
  "easycom": {
    "autoscan": true,
    "custom": {
      "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
    }
  },
  "globalStyle": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "uni-app",
    "navigationBarBackgroundColor": "#F8F8F8",
    "backgroundColor": "#F8F8F8"
  },
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
  }
}

自定义指令校验

创建全局自定义指令进行校验:

// main.js
Vue.directive('auth', {
  inserted(el, binding) {
    if (!checkAuth(binding.value)) {
      el.style.display = 'none'
      uni.showToast({ title: '无权限访问', icon: 'none' })
    }
  }
})

状态管理配合校验

结合Vuex进行全局状态管理:

// store/index.js
export default new Vuex.Store({
  state: {
    token: null
  },
  getters: {
    isLogin: state => !!state.token
  }
})

// 页面中使用
if (!this.$store.getters.isLogin) {
  uni.redirectTo({ url: '/pages/login/login' })
}

注意事项

  1. 拦截器会影响所有请求,需谨慎处理
  2. 全局混入的方法会注入到所有组件中,注意命名冲突
  3. 路由拦截需要根据实际业务需求配置
  4. 自定义指令适合处理DOM级别的权限控制
  5. 状态管理适合需要持久化的校验数据

以上方法可根据项目需求单独使用或组合使用,实现不同层次的全局校验功能。

标签: 全局uniapp
分享给朋友:

相关文章

uniapp 消息推送

uniapp 消息推送

uniapp 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

uniapp swiper禁止滑动

uniapp swiper禁止滑动

禁用 Swiper 滑动的方法 在 UniApp 中,可以通过设置 disableTouch 属性或动态绑定 touchable 属性来禁止 Swiper 组件的滑动行为。 方法一:通过 disab…

uniapp隐藏右侧滚动条

uniapp隐藏右侧滚动条

隐藏右侧滚动条的方法 在UniApp中隐藏右侧滚动条可以通过CSS样式实现,适用于H5、小程序等平台。以下是几种常见的方法: 全局样式设置 在App.vue的全局样式中添加以下CSS代码,适用于所有…

uniapp营销

uniapp营销

营销策略 采用社交媒体推广,结合微信、微博、抖音等平台进行内容营销。通过短视频、直播等形式展示产品特点,吸引用户关注。利用KOL合作,扩大品牌影响力,提高用户信任度。 用户裂变 设计裂变活动…

uniapp 字体设置

uniapp 字体设置

uniapp 字体设置方法 uniapp 中设置字体可以通过以下几种方式实现,适用于不同场景和需求。 全局字体设置 在 App.vue 文件中通过样式定义全局字体,确保所有页面继承该字体设置。…

vue  全局刷新实现

vue 全局刷新实现

Vue 全局刷新实现方法 在Vue应用中实现全局刷新通常涉及重新加载整个页面或重置应用状态。以下是几种常见方法: 使用 window.location.reload() 直接调用浏览器原生的刷新方法…