当前位置:首页 > uni-app

uniapp 页面权限

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

uniapp 页面权限实现方法

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

路由拦截与导航守卫

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

uniapp 页面权限

// 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
  }
})

自定义权限指令

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

uniapp 页面权限

// 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无法拦截:

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

注意事项

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

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

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

相关文章

vue实现页面切换

vue实现页面切换

Vue 实现页面切换的方法 在 Vue 中实现页面切换通常可以通过以下几种方式完成,具体选择取决于项目需求和架构设计。 使用 Vue Router Vue Router 是 Vue.js 官方推荐…

vue实现列表权限

vue实现列表权限

实现列表权限的基本思路 在Vue中实现列表权限通常涉及根据用户角色或权限动态渲染列表内容。核心逻辑是通过权限判断控制列表项的显示、隐藏或操作权限。 权限数据管理 使用Vuex或Pinia存储全局权…

vue实现关闭页面

vue实现关闭页面

关闭当前页面的方法 在Vue中关闭当前页面可以通过JavaScript的window.close()方法实现。该方法会关闭当前浏览器窗口或标签页。 methods: { closePage()…

css制作锁屏页面

css制作锁屏页面

使用CSS制作锁屏页面 锁屏页面通常包含一个背景、时间显示以及可能的解锁按钮或输入框。以下是实现锁屏页面的关键CSS代码和结构。 HTML结构 <!DOCTYPE html> <…

css制作音乐盒页面

css制作音乐盒页面

音乐盒页面设计思路 音乐盒页面通常需要结合音频播放功能与视觉设计。以下是实现一个基础音乐盒页面的关键步骤。 HTML结构搭建 基础HTML需包含音频播放器控件和播放列表: <!DOC…

vue实现点击页面切换

vue实现点击页面切换

Vue 实现页面切换 在 Vue 中实现页面切换通常可以通过以下几种方式实现,具体选择取决于项目需求和技术栈。 使用 Vue Router 实现页面切换 Vue Router 是 Vue 官方提供…