vue添加权限管理中怎么引入permission.js

vue添加权限管理中怎么引入permission.js,第1张

步骤:1. 新建permission.js 实现自定义指令的钩子方法:

importstorefrom'@/store'exportdefault{inserted(el,binding){const{value}=bindingconstroles=store.getters&&store.getters.rolesif(value&&valueinstanceofArray){if(value.length>0){constpermissionRoles=valueconsthasPermission=roles.some(role=>{returnpermissionRoles.includes(role)})if(!hasPermission){el.parentNode&&el.parentNode.removeChild(el)}}}else{thrownewError(`使用方式: v-permission="['admin','editor']"`)}}}

新建index.js 将permission转为install:

在main.js中用use方法使用permission:

在模板中使用v-permission控制访问权限:

第二种方式:Vue.prototype+install+v-if实现用户角色权限控制:

新建permission.js,将checkPer方法注册到Vue.prototype,并注册为install方法:

importstorefrom'@/store'/** * @param {Array} value * @returns {Boolean} * @example see @/views/permission/directive.vue */exportdefault{install(Vue){Vue.prototype.checkPer=(value)=>{if(value&&valueinstanceofArray&&value.length>0){constroles=store.getters&&store.getters.rolesconstpermissionRoles=valuereturnroles.some(role=>{returnpermissionRoles.includes(role)})}else{console.error(`need roles! Like v-permission="['admin','editor']"`)returnfalse}}}}

在main.js中引入permission, 并用use方法:

使用:配合 v-if 在模板中实现权限控制:

1、返回true:申请成功 ;返回false:申请失败

2、同意后,之后再申请此权限则不再d出提示框

3、不要使用compose方法,如RxLifeCycle

1、只要有一个禁止,则返回false;全部同意,则返回true。

2、某个权限同意后,之后再申请此权限则不再d出提示框,其他的会继续d出

3、此申请三个权限,但只会有两个d窗,READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE 是属于一组,

1、只返回一个Permission对象

1、返回三个permission对象

1、ensure、ensureEach、ensureEachCombined用法跟之前类似

首面的设置,然后,点击“设置”,“应用和通知”。点击“应用和通知”后出现“权限管理”,点击“权限管理”后,点击你想要设置权限的软件。最后,我们这里选择的是“百度翻译”,可以根据自己的需要在“存储”、“您的位置”、“电话”等选项后进行打开或者关闭。其他软件的权限设置也跟这个是一样的。权限 的目的是保护Android用户的隐私。Android应用必须获得访问敏感用户数据(例如联系人和SMS)以及某些系统功能(例如摄像头和互联网)的权限。根据功能的不同,系统可能会自动授予权限,或者可能提示用户批准请求。

Android安全体系结构的中心设计要点是,默认情况下,没有任何应用程序有权执行任何会对其他应用程序, *** 作系统或用户产生不利影响的 *** 作。这包括读取或写入用户的私人数据(例如联系人或电子邮件),读取或写入其他应用程序的文件,执行网络访问,使设备保持苏醒等。

该页面概述了Android权限的工作方式,包括:如何向用户显示权限,安装时和运行时权限请求之间的区别,权限的执行方式以及权限的类型及其组。如果您只想要使用应用程序权限的使用指南,请参阅“ 请求应用程序权限”。在应用权限的定义与申请一文中,已经将权限分为普通权限与危险权限,而且所有权限都必须静态或动态申请。那么应用程序申请某些权限后可以执行什么 *** 作呢?本文将详细介绍。

对于Android系统中的相关权限,可以参考官方权限列表文档。如在前文提到的外部存储读权限Manifest.permission.READ_EXTERNAL_STORAGE获取后,应用程序就可以读取外部存储设备上的文件信息、网络访问权限Manifest.permission.INTERNET获取后,应用程序就可以访问互联网、读取联系人权限Manifest.permission.READ_CONTACTS获取后,应用程序就可以读取手机中保存的联系人列表、等等、系统权限的相关内容便不再赘述。

除此之外,应用程序也可以自定义权限,以对其他使用方提供权限校验。自定义权限的相关定义,同样在应用程序的清单文件中。

使用<permission />标签声明一条自定义权限信息。

在该标签内部,android:name属性可以设置权限名称的字符串,由于应用程序所安装的系统中所有权限都是唯一的,所以权限名称通常以应用程序包名前缀;

还必需设置android:protectionLevel权限级别属性,该属性值只能是系统已经定义的normal普通权限级别、signature签名权限级别、dangerous危险权限级别、或appop特殊权限级别;

另外还有android:label权限标签和android:description权限描述两个属性,均必须以字符串内容赋值,用来介绍权限的相关信息,其中标签属性值要尽可能简短,而描述属性值要尽可能详细。这两个属性在应用程序的权限管理中展示给用户查看。

在该标签中,还可以设置android:permissionGroup权限分组属性,系统权限已经分别归入系统分组中,各系统组别由android.Manifest.permission_group静态类中的各字符串常量定义。或者使用标签<permission-group />定义一个新的分组。

不管是系统权限,还是自定义权限,声明方式都是遵循上篇文章中的步骤。

一般在需要系统权限的地方,系统都已经提前写好了相关需求。

而需要自定义权限的相关地方,需要应用程序提前写明。通常是在清单文件中关于四大组件的标签中定义需求权限。在<activity />、<service />、<receiver />中使用android:permission所需权限属性,但是在<provider />有包括android:readPermission读取权限和android:writePermission写入权限两个属性对读取数据和写入数据分别提出权限需求。

这样,其他应用程序或进程在申请启动该组件时,就必须先申请其需求权限,才能正常启动该组件,不然将会抛出java.lang.SecurityException安全异常。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11459567.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存