Delon ACL
Delon ACL
使用
ACLService
核心是 ACLService,See:https://github.com/ng-alain/delon/blob/master/packages/acl/src/acl.service.ts
它注入了 AlainConfigService, 取出 "acl" 部分作为数据来源。
默认的 AlainACLConfig 只有一个属性 guard_url,表示没有权限的跳转地址
import type { AlainACLConfig } from '@delon/util/config';
export const ACL_DEFAULT_CONFIG: AlainACLConfig = {
guard_url: `/403`
};
See: https://github.com/ng-alain/delon/blob/master/packages/acl/src/acl.config.ts
can(), 检查是否拥有对应的角色,内部使用了 ACLType 类型的数据
/**
* NOTE:`ACLType` 类型可能会被其他类库所引用,为了减少类库间彼此的依赖性,其他类库会以复制的形式存在
* 当这里有变化时,请务必同步更新,涉及:`MenuService.acl`、`util.AlainACLType`
* TODO: 尝试增加 `@delon/core` 类库用于处理这种通用型
*/
import { Injector } from '@angular/core';
import { Observable } from 'rxjs';
import type { ACLService } from './acl.service';
export interface ACLType {
/**
* 角色
*/
role?: string[];
/**
* 权限点
*/
ability?: number[] | string[];
/**
* Validated against, default: `oneOf`
* - `allOf` the value validates against all the roles or abilities
* - `oneOf` the value validates against exactly one of the roles or abilities
*/
mode?: 'allOf' | 'oneOf';
/**
* 是否取反,即结果为 `true` 时表示未授权
*/
except?: boolean;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
[key: string]: any;
}
export type ACLCanType = number | number[] | string | string[] | ACLType;
export type ACLGuardFunctionType = (srv: ACLService, injector: Injector) => Observable<ACLCanType>;
export type ACLGuardType = ACLCanType | Observable<ACLCanType> | ACLGuardFunctionType;
See: https://github.com/ng-alain/delon/blob/master/packages/acl/src/acl.type.ts
ACLGuard 使用来自路由定义的 data 属性提供的权限数据,可以包括两个部分
- guard, 描述所需权限的数据对象,或者一个返回权限数据的函数
- guard_url,不能通过权限检查的时候,跳转到的目标地址
内部首先取得来自路由定义的权限数据 data, 然后调用 ACLService 的 can() 来判断是否拥有适当的权限
See: https://github.com/ng-alain/delon/blob/master/packages/acl/docs/guard.zh-CN.md
See: https://github.com/ng-alain/delon/blob/master/packages/acl/src/acl-guard.ts
使用
例如,当用户登录之后,获得用户身份信息,调用 setRole( ["admin", "manager", "user"] ) 来设置当前用户所拥有的角色。
以后,可以在路由上配置
{
path: 'auth',
canActivate: [ ACLGuard ],
data: {
guard: {
role: [ 'admin' ],
ability: [ 10, 'USER-EDIT' ],
mode: 'allOf'
} as ACLGuardType,
guard_url: '/no-permisseion'
}
},
Button 中使用 ACL
<button nz-button [acl]="'role-a'">role-a</button>
<button nz-button [acl]="'role-b'" class="ml-sm">role-b</button>
Delon ACL的更多相关文章
- [开源]OSharpNS 步步为营系列 - 5. 添加前端Angular模块[完结]
什么是OSharp OSharpNS全称OSharp Framework with .NetStandard2.0,是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架.这个 ...
- haproxy利用ACL规则封禁自定义IP地址拒绝访问
现在有一个需求就是在发版的时候希望除公司IP外的外网访问服务的时候都是拒绝访问的 现在利用haproxy 的acl规则作出限制 errorfile 403 /etc/haproxy/err ...
- HAProxy的日志配置以及ACL规则实现负载均衡
HAProxy配置日志策略 默认情况下,HAProxy是没有配置日志的在centos6.3下默认管理日志的是rsyslog,可以实现UDP日志的接收,将日志写入文件,写入数据库先检测rsyslog是否 ...
- CISCO VLAN ACL
对于cisco VLAN ACL 首先得定义 standard ACL或 extented ACL用于抓取流量 注意这里的抓取流量不是最终的对流量的操作,而是决定什么样的流量用VLAN ACL 来处理 ...
- MAC OS X的ACL扩展权限设置
在WEB开发时,网站是以_www的用户运行的,而我在本地是以liuwencan的用户编辑的.这就带来一个问题:如果所有文件属于liuwencan,那么网站运行需要写文件时就因无权限而失败:如果所有文件 ...
- linux ACL权限规划:getfacl,setfacl使用
ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置,ACL可以针对单一用户.单一文件 ...
- ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表
zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机制来解决访问权限问题,详见官网文档:ht ...
- Centos下ACL(访问控制列表)介绍(转)
我们知道,在Linux操作系统中,传统的权限管理分是以三种身份(属主.属組以及其它人)搭配三种权限(可读.可写以及可执行),并且搭配三种特殊权限(SUID,SGID,SBIT),来实现对系统的安全保护 ...
- ACL权限设置命令setfacl和getfacl命令
ACL权限设置命令setfacl和getfacl命令 setfacl命令是用来在命令行里设置ACL(访问控制列表).在命令行里,一系列的命令跟随以一系列的文件名. [TOC] 选项 |参数|说明| ...
- ZooKeeper设置ACL权限控制
ZK的节点有5种操作权限:CREATE.READ.WRITE.DELETE.ADMIN 也就是 增.删.改.查.管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)注:这5种权限中,del ...
随机推荐
- 离线安装Redis
redis 直接去官网下载tar包就可以 主要是gcc 环境的安装包不太好找,我下载的还缺少 make 如果服务器比较干净,还得预装一下lrzsz-0.12.20.tar.gz 上传下载文件,unzi ...
- Qt构建cmake工程方法总结
由于工作需要,最近打算统一将所有C/C++项目都改成使用cmake编译.传统后台业务问题不大,但是有些牵涉到跨平台的Qt项目还是折腾了一阵.下面对这段时间的收获做一个总结,也希望帮助看到本文的朋友少走 ...
- OCR+PDF解析配套前端工具开源详解!
面对日常生活和工作中常见的OCR识别.PDF解析.翻译.校对等场景,配套的可视化工具能够极大地提升我们的使用体验和工作效率. 通过可视化界面,我们可以直观地看到文本识别.解析和翻译的结果,便捷评估产品 ...
- Python之py9-录音自动下载
#!/usr/bin/env python # -*- coding:utf-8 -*- import os import re import pandas as pd import numpy as ...
- ES检索服务搜索结果高亮
一.前言 在实际使用中搜索结果中的关键词前端通常会以特殊形式展示,比如标记为红色使人一目了然.我们可以通过 ES 提供的高亮功能实现此效果. 二.代码实现 前文查询是通过一个继承 Elasticsea ...
- python项目实战——一元线性回归预测模型
文章目录 1.一元线性回归简介 2.环境准备 3.数据准备 4.可视化数据 5.构建线性回归模型 在数据科学领域,预测分析是一项核心技能.一元线性回归作为预测分析的基石,能够帮助我们理解一个自变量如何 ...
- 《JVM第6课》本地方法栈
1 什么是本地方法 首先要知道什么是本地方法,本地方法并不是 JVM 自己的方法,也不是 jre 里面的方法,而是指那些操作系统自己的方法(如C/C++方法),它们在操作系统目录里.可以这么理解,本地 ...
- Windows通过修改注册表设置系统默认浏览器
前段时间有个程序要求获取系统的默认浏览器,baidu.Google了好久,后又结合procmon.exe跟踪浏览器打开web页面的注册表操作信息,找到了最终的位置,这里做一个总结.亲测win10多个浏 ...
- 使用wxpython开发跨平台桌面应用,基类列表窗体的抽象封装处理
在开发一套系统框架的时候,除了关注实现系统的功能实现外,我们对于系统的各个方面都是应该精益求精,以最少的编码做最好的事情,在开发的各个层次上,包括前端后端,界面处理.后端处理.常用辅助类.控件封装等等 ...
- 全新向量数据库SQL Server 2025:带你迈入AI驱动的数据未来
全新向量数据库SQL Server 2025:带你迈入AI驱动的数据未来 上次大家下单的<微软憋大招:SQL Server + Copilot = 地表最强AI数据库!> 抱怨迟迟没有发货 ...