当前位置:首页 > 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中隐藏滚动条可以通过以下几种方法实现,具体根据使用场景选择: 全局样式设置(APP/H5) 通过修改全局CSS样式隐藏滚动条,适用于所有页面: ::-webkit-scrollbar…

uniapp部署到服务器

uniapp部署到服务器

部署准备 确保本地开发环境已完成项目构建,生成静态文件(H5端为/dist/build/h5目录)。检查服务器环境是否安装Nginx/Apache等Web服务软件,并配置好域名解析。 上传文件 通过…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

uniapp视频

uniapp视频

uniapp视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…

uniapp可以用vant吗

uniapp可以用vant吗

uniapp中使用Vant组件库的可行性 Vant是专为Vue.js设计的移动端组件库,而uniapp是一个跨平台开发框架。两者并非原生兼容,但可通过以下方式实现部分Vant组件的使用。 方法一:使…

重构uniapp

重构uniapp

重构 Uniapp 项目的关键方法 代码结构优化 将页面、组件、静态资源按功能模块划分,避免全部堆放在根目录。建议采用以下结构: src/ ├── components/ // 通用组件…