当前位置:首页 > 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实现完整鉴权流程。

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

相关文章

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 编写组件代码 在 s…

vue实现结算页面

vue实现结算页面

Vue 实现结算页面的方法 数据绑定与表单验证 使用 Vue 的 v-model 实现表单数据的双向绑定,确保用户输入的数据能够实时更新到 Vue 实例中。例如,绑定收货地址、支付方式等表单字段。…

uniapp 权限分配

uniapp 权限分配

权限分配概述 在UniApp中,权限分配主要涉及应用访问设备功能或用户数据的权限管理。根据不同的平台(如H5、小程序、Android、iOS),权限分配的实现方式有所差异。以下分平台介绍具体方法。…

vue前端实现权限

vue前端实现权限

Vue 前端权限实现方案 路由权限控制 使用 Vue Router 的全局前置守卫 beforeEach 进行路由拦截,结合用户的权限列表过滤可访问路由。 router.beforeEach((to…

php怎样实现页面跳转页面

php怎样实现页面跳转页面

PHP实现页面跳转的方法 使用header()函数实现跳转 通过设置HTTP头信息中的Location字段实现跳转,需确保在调用前没有输出任何内容。示例代码: header("Location: h…

jquery页面刷新

jquery页面刷新

jQuery 实现页面刷新 使用 jQuery 刷新页面可以通过以下几种方法实现: 方法一:使用 location.reload() $(document).ready(function() {…