12、授权策略抽象:从理论到实践

授权策略抽象:从理论到实践

在软件开发中,授权是确保系统安全性和数据完整性的关键环节。合理的授权设计不仅能有效保护系统资源,还能提升代码的可维护性和可测试性。本文将深入探讨授权规则与执行的分离、策略对象的提取、抽象层的构建以及视图层的授权应用等方面。

授权规则与执行的分离

从分层架构的角度看,将授权规则直接定义在表示层并不合适。授权规则应描述业务逻辑,不依赖于具体的交付机制(如 HTML、API、WebSockets 等),可被不同的表示层抽象使用。而授权执行则应留在表示层,并依赖于架构栈中较低层定义的规则。

将授权规则放入模型看似可行,但存在两个主要问题。一是模型中的方法通常缺乏上下文感知能力,可能需要添加额外的上下文特定方法或修改参数,增加方法的复杂性;二是授权规则并非领域层的一部分,领域对象在授权上下文中运行,无需授权检查。因此,我们需要在服务层引入新的抽象。

ABAC(基于属性的访问控制)也被称为 PBAC(基于策略的访问控制),因为授权规则通常以策略的形式描述。我们可以利用策略对象来实现授权。

提取策略对象

策略对象并非仅用于授权和安全功能,还可应用于应用程序的任何业务规则。在授权场景中,一个策略对象通常对应一个资源,多数情况下该资源是领域模型实体。

策略对象封装了业务规则或一组相关业务规则,用于描述在给定上下文中可执行的操作。其主要目的是隐藏实现细节(通常是一堆 if - else 语句)并减少代码重复。策略对象的公共接口通常包含一个或多个谓词方法,即返回布尔值的方法。

以图书馆应用为例,我们有一个 Book 资源和对应的模型,可创建一个 BookPolicy 类来

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值