当前位置:首页 > 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
分享给朋友:

相关文章

vue实现全局遮罩层

vue实现全局遮罩层

实现全局遮罩层的几种方法 在Vue中实现全局遮罩层可以通过多种方式,以下是几种常见的方法: 使用Vue组件和状态管理 创建一个遮罩层组件,通过Vuex或Pinia管理其显示状态。 <temp…

uniapp开发

uniapp开发

uniapp开发简介 uniapp是一款基于Vue.js的跨平台开发框架,支持一次开发,多端部署。开发者可以通过编写一套代码,发布到iOS、Android、Web以及各种小程序平台(如微信、支付宝、百…

uniapp 推送

uniapp 推送

uniapp 推送实现方法 uniapp 推送功能可以通过多种方式实现,主要包括使用第三方推送服务、原生插件或云服务。以下是几种常见的实现方案: 使用 UniPush 服务 UniPush 是…

uniapp消息推送

uniapp消息推送

uniapp消息推送实现方法 uniapp支持多种消息推送方式,包括uniPush、个推、极光推送等。以下为常见实现方案: uniPush(官方推荐) uniapp官方提供的推送服务,基于DClou…

uniapp和vue有什么区别

uniapp和vue有什么区别

uniapp和vue的区别 1. 定位与用途 Vue:一个渐进式JavaScript框架,专注于构建用户界面,适用于开发单页应用(SPA)或复杂前端项目。 UniApp:基于Vue.js的…

uniapp删除

uniapp删除

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