当前位置:首页 > uni-app

uniapp全局校验

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

uniapp全局校验的实现方法

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

使用请求拦截器进行校验

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

// 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中配置页面路由守卫:

{
  "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删除

卸载 uniapp 项目依赖 在项目根目录下执行以下命令,移除 node_modules 和依赖锁文件: rm -rf node_modules package-lock.json 如需清理全局…

uniapp前端项目

uniapp前端项目

Uniapp 前端项目开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App 等)。以下是关于 Uniapp 前端项目的关键信息:…

uniapp 美颜

uniapp 美颜

uniapp 美颜实现方法 在uniapp中实现美颜功能可以通过多种方式完成,以下是一些常见的方法: 使用原生插件 uniapp支持调用原生插件实现美颜效果,适用于对性能要求较高的场景。需要开发原…

uniapp 搜索

uniapp 搜索

uniapp 搜索功能实现方法 全局搜索组件集成 在pages.json中配置全局搜索栏,适用于所有页面顶部显示搜索框。示例代码: "globalStyle": { "navigation…

uniapp 线程

uniapp 线程

uniapp 线程的概念 在 uniapp 中,线程的概念与原生应用开发有所不同。由于 uniapp 是基于 JavaScript 的运行环境,它并不直接支持多线程操作。JavaScript 本身是单…

uniapp grid

uniapp grid

uniapp grid 布局实现方法 在 uniapp 中实现 grid 布局可以通过多种方式完成,包括使用内置组件、CSS Grid 或第三方插件。以下是几种常见的实现方法: 使用 uni-gri…