Skip to content
On this page

权限判断

hasPermission 指令

该指令是基于 Vue2 封装的指令,用于判断用户是否具有 组件/按钮 级别的权限。

使用

  1. main.js 文件中加入以下代码:
import Vue from 'vue'
import { directive } from 'sewen-ui/element-ui'
import permissionList from './permission/index.js'
import permissions from '服务端返回的用户权限列表接口数组'
Vue.use(directive.permission, {
    permissionList, // 预配置的权限列表
    permissions
})
  1. 创建按钮权限管理文件

在你项目中,新增按钮权限管理文件夹:src/permission

在该文件下新增 index.js 文件和 modules 文件夹;

index.js 文件加入以下代码:src/permission/index.js 默认加载 modules 文件夹所有文件内容。

/**
 * 权限配置模块文件,统一引入所有权限配置文件
 */

//  require.context返回modules文件夹下所有的文件对象,参考https://webpack.js.org/guides/dependency-management/#requirecontext
const modulesFiles = require.context('./modules', true, /\.js$/)
/*
*通过直接获取modules文件夹下的所有文件添加进入modules对象
*回调函数参数:
*modules:文件对象
*modulePath:文件路径
*/
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  // 获取文件名称
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')

  // 获取路径保存在modulePath文件内容
  const value = modulesFiles(modulePath)

  // 修改modules对象
  modules[moduleName] = value.default

  return modules
}, {})

export default modules

src/permission/modules 文件夹下创建文件,文件默认导出对象,对象key 为权限标识名称,值为权限标识字符串。

以创建 user.js 用于按钮权限为例:

src/permission/modules/user.js 文件夹创建 user.js 文件,该文件默认导出以下内容:

export default {
	"add": '用户新增按钮权限字符串标识',
    "delete": '用户删除按钮权限字符串标识',
    "edit": '用户编辑按钮权限字符串标识',
}
  1. 在组件中使用指令:
  • <template> 模板中使用:

    v-permission="{module:'模块文件名称',auth:'权限key值'}"
    
  • 在函数中使用:

    this.hasPermissions(module:'模块文件名称',auth:'权限key值')
    

贡献者

sewen-ui design by Sewen