当前位置:首页 > uni-app

uniapp 页面权限

2026-02-06 00:21:43uni-app

uniapp 页面权限实现方法

在uniapp中实现页面权限控制通常涉及路由拦截、全局验证和动态权限管理。以下是几种常见方案:

路由拦截与导航守卫

通过uni.addInterceptor拦截页面跳转,在跳转前验证权限:

// main.js 或 App.vue
uni.addInterceptor('navigateTo', {
  invoke(args) {
    const needLogin = ['/pages/user/center', '/pages/order/list']
    if (needLogin.includes(args.url) && !hasLogin()) {
      uni.showToast({ title: '请先登录', icon: 'none' })
      return { url: '/pages/login/index' } // 重定向到登录页
    }
    return args
  }
})

自定义权限指令

创建全局指令控制元素显示:

// main.js
Vue.directive('auth', {
  inserted(el, binding) {
    if (!checkPermission(binding.value)) {
      el.parentNode.removeChild(el)
    }
  }
})

// 使用方式
<button v-auth="'admin'">管理员按钮</button>

后端动态权限方案

  1. 用户登录后获取权限列表
  2. 前端存储权限标识(Vuex或本地存储)
  3. 页面加载时校验权限:
    // 页面 onLoad 钩子
    onLoad() {
    if (!this.$store.getters.hasPermission('pageA')) {
     uni.redirectTo({ url: '/pages/error/403' })
    }
    }

权限数据存储结构示例

建议采用扁平化权限标识:

// 用户权限数据示例
{
  permissions: [
    'page:home',
    'page:user',
    'button:delete'
  ]
}

特殊场景处理

TabBar页面权限需特殊处理,因uni.switchTab无法拦截:

uniapp 页面权限

// 在App.vue的onLaunch中检测
uni.onTabBarMidButtonTap(() => {
  if (!hasPermission('tabCenter')) {
    uni.navigateTo({ url: '/pages/auth/tips' })
  }
})

注意事项

  • 敏感权限需后端二次验证
  • H5端注意路由守卫与History模式兼容
  • 小程序端需处理页面栈限制
  • 权限变更时及时更新本地存储

以上方案可根据实际项目需求组合使用,建议配合JWT或OAuth2.0实现完整鉴权流程。

标签: 权限页面
分享给朋友:

相关文章

vue实现的页面

vue实现的页面

Vue 实现的页面示例 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是一个简单的 Vue 页面实现示例,包含基本的结构和功能。 安装 Vue 通过 CDN 引入 V…

vue 实现权限

vue 实现权限

Vue 实现权限控制的方法 在 Vue 项目中实现权限控制通常涉及前端路由权限、按钮权限和 API 权限等多个层面。以下是几种常见的实现方式: 基于路由的权限控制 使用 Vue Router 的全局…

h5页面如何实现

h5页面如何实现

实现H5页面的方法 H5页面是基于HTML5技术的网页,通常用于移动端和响应式设计。以下是实现H5页面的关键步骤和技术要点。 基础结构 使用HTML5的DOCTYPE声明作为页面的起始。HTML5简…

vue实现页面缓存

vue实现页面缓存

Vue 实现页面缓存的常用方法 使用 <keep-alive> 组件 <keep-alive> 是 Vue 内置组件,用于缓存动态组件或路由组件。通过包裹需要缓存的组件,可以保…

vue实现页面打印

vue实现页面打印

Vue 实现页面打印的方法 在 Vue 项目中实现页面打印功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 window.print() 方法 调用浏览器原生的打印功能是最简单的方式。创建…

vue项目实现页面

vue项目实现页面

Vue项目实现页面的基本方法 创建Vue组件 使用Vue单文件组件(SFC)方式组织页面结构,每个.vue文件包含<template>、<script>和<style&g…