Angular之ngx-permissions的常见使用情况

Angular之ngx-permissions的常见使用情况

权限验证

首先需要请求验证并通过,然后获得权限,最后检查权限。

这种方式需要在Angular 4.3.2 版本以上才会有效工作。

一般来说我们的程序有2个守卫,一个是信息验证,一个是权限守卫,并且一定是先请求信息验证,然后才是权限验证。

例如下面的路由配置:

let routes = [{ path: '', canActivate: [AuthGuard],children: [{path: 'component', component: ComponentName, canActivate: [NgxPermissionsGuard],data: {permissions: {only: ['ADMIN', 'MODERATOR'],redirectTo: 'another-route'}}}]}
]

守卫过程为,必须先通过 AuthGuardNgxPermissionsGuard 后才能进入下一个路由,上面代码中为当用户为ADMIN或者MODERATOR时才能通过。

注意:确保在身份验证后卫链接的权限请求

canActivate() {return authLogin().then((obj) => {// or load here if you dont need second request// this.permissions.service.loadPermissions(obj.permissions)return this.authPermissions.getPermissions('url');}).then((permissions) => {this.permissions.service.loadPermissions(permissions))
}

保存权限

当用户刷新页面的所有数据都将丢失,包括该用户的权限。有很多的保存权限的方式,但是取决于你的业务需求。但最常见的是将它们保存到 localStorage 的。然后从 localStorage 的应用程序启动时加载它们。

例如下面的代码:

login() {return authLogin().then((obj) => {// Save permissions to localStorage.localStorage.setItem('permissions', JSON.stringify(obj.permissions));this.permissions.service.loadPermissions(obj.permissions);                })
}

禁用元素

通过服务禁用

this.ngxPermissionsConfigurationService.addPermissionStrategy('disable', (templateRef: TemplateRef) => {this.renderer2.setAttribute(tF.elementRef.nativeElement.nextSibling, 'disabled', 'true');// 下面的也可以,但是不推荐。templateRef.elementRef.nativeElement.nextSibling.setAttribute('disabled', true)
});this.ngxPermissionsConfigurationService.addPermissionStrategy('enable', (templateRef: TemplateRef) => {this.renderer2.removeAttribute(tF.elementRef.nativeElement.nextSibling, 'disabled');
});

通过ngxPermissions指令

使用 ngxPermissions指令 配合authorisedStrategy策略。

<button  *ngxPermissionsOnly="'ADMIN'; authorisedStrategy: 'enable'; unauthorisedStrategy: 'disable'"><div>Admin will only see this</div>
</button>

也可以通过ngxPermissions指令配合服务来使用:

html

<button  *ngxPermissionsOnly="'ADMIN'"><div>This button will be disabled if user has no permissions or role 'admin'</div>
</button>

component

this.ngxPermissionsConfigurationService.setDefaultOnAuthorizedStrategy('enable');orthis.ngxPermissionsConfigurationService.setDefaultOnUnauthorizedStrategy('disable')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Angular之ngx-permissions的控制视图访问

Angular之ngx-permissions的控制视图访问 案例 demo https://stackblitz.com/edit/ngx-permissions-iwexsb Permission指令 Permission模块将导出指令 ngxPermissionsOnly 和 ngxPermissionsExcept,它能够根据权限和角色控制元素的显示/隐藏。 指令属性 属性值描述ngxPerm…

网页滚动条上下滚动固定元素左右不固定之sticky

网页滚动条上下滚动固定元素左右不固定之sticky 有时候我们需要网页中某元素在上下滚动时可以固定在某一位置&#xff0c;但是左右不固定&#xff0c;也就是会随着左右滚动条滚动。那么我们可以通过 sticky 布局来解决。 position: sticky 我们先看看兼容性&#xff1a; 在使…

Angular之ngx-permissions的管理权限

Angular之ngx-permissions的管理权限 介绍 让我们开始先说说什么是权限?权限是指用户可以在应用程序中畅通无阻的能力,所以你要考虑你的程序需要那些权限,分别对应那一部分。 注意: 此库只适用于前端的简单防护,真正发挥作用的是后端,不仅仅要做好前端验证,后端更为重…

Timeshift系统备份与还原

Timeshift系统备份与还原 系统备份 一般Linux系统是比较稳定的&#xff0c;但是一旦崩溃就很难恢复&#xff0c;这里介绍 Timeshift系统备份工具。 安装Timeshift ubuntu 和 linux mint sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt-get update sudo apt-get ins…

Angular之ngx-permissions的角色管理

Angular之ngx-permissions的角色管理 案例 demo https://stackblitz.com/edit/ngx-permissions-role 介绍 通过定义一个角色是一组指定的由特定用户组的鉴别能力(权限)。因此,例如用户或匿名的角色和权限不够。我们可以代表我们作为一组权限的角色应该是能够执行的用户角色…

Angular之ngx-permissions的路由使用

Angular之ngx-permissions的路由使用 介绍 现在,你准备开始与控制访问应用程序的状态工作。为了限制任何状态ngx-permission需要依靠 Angular Route 数据属性,通过permissions间接控制认证配置。 Permissions对象接受以下属性: 属性接受值onlyString|Array|Functionexcep…

Angular之jwt令牌身份验证

Angular之jwt令牌身份验证 demo https://gitee.com/powersky/jwt 介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在…

图片床

仅供存储图片

Angular实现dialog对话框封装

Angular实现dialog对话框封装 为什么要封装? 对于Angular Material UI库中的dialog组件,实在不是很好用,所以打算简单封装一下啊。 直接代码吧。 封装dialog组件 1.创建一个dialog组件 2.dialog.component.html文件 <ng-template #dialog><!-- 对话框投射内容…

Ubuntu LinuxMint安装微信QQ阿里旺旺

Ubuntu LinuxMint安装微信QQ阿里旺旺 目前linux大部分桌面发行版都可以安装windows版本的微信、QQ、阿里旺旺等软件了&#xff0c;这是deepin系统的功劳&#xff0c;这里还要感谢一下 前深度CEO 勇哥的不懈努力和坚持。 安装 这里推荐一个移植好的安装方法。 zq1997/deepin-w…

开发简化版NgFor

开发简化版NgFor 下面是自定义实现一个简化版本的NgFor指令,一般来说使用Angular默认的即可,但是在追求高性能的时候,或许你需要这样一个简化版本的指令,让你的程序运行流畅、纵享丝滑。 直接贴出代码。 import {Directive, EmbeddedViewRef, Input, DoCheck, OnChanges…

Angular 9 新功能摘要

Angular 9 新功能摘要 Angular的9.0.0版本已经发布了!这是一个跨越整个平台的主要版本,包括框架、Angular Material、和Angular CLI。该版本将应用程序默认切换到Ivy编译器,并引入了改进的组件测试方法。 这是Angular在过3年内对Angular做的最大更新之一,Ivy 的正式应用,…

Angular添加class的正确方式

Angular添加class的正确方式 很多时候我们会遇到需要给元素增加或删除指定class,从而达到某种目的。那么在Angular中我们如何添加? className属性绑定 我们可以通过HTML元素的className属性进行绑定: <div [className]="demo-class"></div>当然也…

创建自定义Tabs组件-01

创建自定义Tabs组件-01 此文章用于讲解如何封装一个自定义 Tabs 组件。一步一步了解如何封装自己想要的组件。 构思 想象一这个组件该如何使用?一定要站在使用者的角度,大致可能这样。 <tabs><tab title="Tab 1">Tab 1</tab>

Angular自动取消订阅RxJs

Angular自动取消订阅RxJs 在使用 rxjs 时我们经常忘记调用unsubscribe()而导致内存泄露,很多时候你很难发现它,在RxJs官方有这样一段话: What is a Subscription? A Subscription is an object that represents a disposable resource, usually the execution of an Obser…

websocket心跳检测前后端架构

websocket心跳检测前后端架构 本篇文章为初略架构websocket在前后端的心跳检测机制,实现相对毛糙。 下面介绍内容参照 廖雪峰 的描述,为了切换页面麻烦,这里就直接挑简要的信息复制黏贴过来。 廖雪峰 – WebSocket 教程。 为什么需要 WebSocket? 初次接触 WebSocket 的人…

Angular消息通知组件ngx-notification

Angular消息通知组件ngx-notification It is a flexible and usable component. Demo Demo Installation 1.You need install @flywine93/ngx-notification by npm npm install @flywine93/ngx-notification --save2.You need install @flywine93/ngx-autounsubscrb npm …

01-go安装

01-go安装 本教程适用于linux发行版安装。 当前系统使用的是linux mint 19.ubuntu deepin 等同理。 下载安装包 下载地址 go downloads。 选择Linux包点击下载。 开始安装 1.设定安装目录 在下载好的压缩包文件夹内打开终端&#xff0c;并设置安装目录环境变量&#xff0c…

02-go的IDE安装

02-go的IDE安装 此篇文章是在go已经安装的前提下进行的&#xff0c;如果go还没有安装请参考这篇文章 01-go安装。 本文章使用的是vscode作为go IDE&#xff0c;所以需要提前安装好vscode&#xff0c;并且是在linux系统下。 当前系统为linux mint 19&#xff0c;ubuntu deepin…

03-go的包管理

03-go的包管理 在Go 1.11和1.12版本时就已经支持了对包管理功能,但还是相对有一些小的问题,不过在后续的版本中已经陆续解决。增加包管理是必然趋势,一门好的语言,不光要有好的生态,优美的语法,包管理也是必不可缺的功能,例如大名鼎鼎 npm,就连 C++ 也要推出包管理,好…