查看原文
其他

微服务中如何设计一个权限授权服务

DotNet 2021-09-23

(给DotNet加星标,提升.Net技能

转自:simple
cnblogs.com/alangur/p/13187053.html

基于角色的访问控制  (RBAC) 


是将系统访问限制为授权用户的一种方法,是围绕角色和特权定义的与策略无关的访问控制机制,RBAC的组件使执行用户分配变得很简单。


在组织内部,将为各种职务创建角色。执行某些操作的权限已分配给特定角色。成员或职员(或其他系统用户)被分配了特定角色,并且通过这些角色分配获得执行特定系统功能所需的权限。由于未直接为用户分配权限,而是仅通过其角色(一个或多个角色)获取权限,因此,对单个用户权限的管理就变成了简单地为用户帐户分配适当角色的问题。这简化了常见操作,例如添加用户或更改用户部门。


RBAC定义了三个主要规则


1、角色分配:仅当对象已选择或分配了角色时,对象才能行使权限。


2、角色授权:必须为主体授权主体的活动角色。使用上面的规则1,此规则可确保用户只能承担获得其授权的角色。


3、权限授权:仅当对象的活动角色被授权时,对象才能行使权限。使用规则1和2,此规则可确保用户只能行使其被授权的权限。


创建RBAC的模型


菜单


public class SysMenu
{
/// <summary>
/// 父级
/// </summary>
public int ParentId { get; set; } = 0;

/// <summary>
/// 菜单名称
/// </summary>
[StringLength(20)]
public string Name { get; set; }

/// <summary>
/// 菜单地址
/// </summary>
[StringLength(20)]
[Required]
public string Url { get; set; }

/// <summary>
/// 层级
/// </summary>
[Column(TypeName = "tinyint(4)")]
public int Level { get; set; } = 1;

/// <summary>
/// 菜单权限(list<int /> json)
/// </summary>
[StringLength(100)]
public string Operates { get; set; }

/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }

/// <summary>
/// 菜单图标
/// </summary>
public string Icon { get; set; }
}


功能


public class SysOperate
{
/// <summary>
/// 按钮名称
/// </summary>
[StringLength(20)]
[Required]
public string Name { get; set; }

/// <summary>
/// 备注
/// </summary>
[StringLength(int.MaxValue)]
public string Remark { get; set; }

/// <summary>
/// 唯一标识
/// </summary>
[Required]
public int Unique { get; set; }
}


角色


public class SysRole
{
/// <summary>
/// 角色名称
/// </summary>
[StringLength(20)]
[Required]
public string Name { get; set; }

/// <summary>
/// 备注
/// </summary>
[StringLength(int.MaxValue)]
public string Remark { get; set; }
}


用户


public class SysUser
{
/// <summary>
/// 角色id
/// </summary>
public int RoleId { get; set; }

/// <summary>
/// 用户名
/// </summary>
[StringLength(32)]
[Required]
public string UserName { get; set; }

/// <summary>
/// 密码
/// </summary>
[StringLength(500)]
[Required]
public string Password { get; set; }
}


微服务中让它成为一个授权权限服务


在日常工作中,总会有很多系统要做,每个系统都要一套完整的权限功能,有现成的直接拿来粘贴复制,没有现成的又要浪费很多时间去设计实现它。如果有这样一个服务,我们可以节省很多不必要的粘贴复制操作,节省很多时间。


于是 ketchup.zero这样一个服务就诞生了。它是基于ketchu微服务框架来实现的一个权限授权服务,基本可以满足我们日常工作的的权限需求。


服务的前端是基于vue的模板d2admin 开发的。


ketchup.zero的功能


登陆



面板



用户配置角色



菜单设置拥有那些权限



限/功能/按钮 管理



角色设置权限



最后


如果它对你有帮助,请给一波start


服务ketchup.zero源码地址:https://github.com/simple-gr/ketchup.zero


微服务框架ketchup源码地址:https://github.com/simple-gr/ketchup


- EOF -


推荐阅读  点击标题可跳转

.NET 使用 ORM 访问 神舟通用数据库

.NET Standard实现不同内网端口的互通

客官,来看看 AspNetCore 的身份验证


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

好文章,我在看❤️

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存