博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Module Zero之角色管理
阅读量:5872 次
发布时间:2019-06-19

本文共 1318 字,大约阅读时间需要 4 分钟。

角色实体

角色实体代表了该应用的一个角色。它应该派生自AbpRole类,如下所示:

public class Role : AbpRole
{ //这里添加你自定义的角色属性}

该类是当你安装module-zero时创建的。角色数据存储在数据中的AbpRoles表。你可以在Role类中添加自定义的属性。

AbpRole定义的最重要的一些属性包括:

  • Name:租户中角色的唯一名字。
  • DisplayName:角色中显示的名字。
  • IsDefault:表示该角色是否是默认赋给新用户的。
  • IsStatic:表示该角色是否是静态的(预生成的和不能删除的)。

角色是用来组合权限的。当一个用户有了一个角色之后,那Ta将会获得该角色的所有权限。一个用户可以有多个角色。用户的权限是该用户所拥有角色的所有权限的并集。

动态角色 vs 静态角色

在Module-zero中,角色可以是动态的或静态的:

  • 静态角色 :静态角色有一个已知的名字(比如‘admin’),且以后不能改变这个名字(可以改变要显示的名字)。在系统启动的时候它已经存在了,并且不能删除。因此,我们可以基于一个静态的角色名写代码。
  • 动态(非静态)角色:部署之后,我们可以创建动态的角色。然后我们可以为这个角色授予权限,我们也可以把该角色赋予其他用户,还可以删除它。在开发的时候,我们可以不知道动态角色的名字。

使用IsStatic属性设置角色是静态的还是动态的。还有,我们应该在模块的PreInitialize上注册静态角色。假设我们给租户一个"Admin"静态角色:

Configuration.Modules.Zero().RoleManagement.StaticRoles.Add(new StaticRoleDefinition("Admin", MultiTenancySides.Tenant));

这样,module-zero就知道该静态的角色了。

默认角色

可以设置一个或多个角色为默认角色。默认情况下,默认角色赋予新添加的或新注册的用户。这不是一个开发时属性,并且可以在发布后设置或者改变。使用IsDefault属性设置默认角色。

角色管理者

角色管理者是执行角色领域逻辑的服务:

public class RoleManager : AbpRoleManager
{ //这里可以添加自己的代码}

你可以注入角色管理者,然后使用它创建,删除,更新角色,为用户授权以及更多。你可以在这里添加你自己的方法。而且,可以重写AbpRoleManager基类中的任何方法来满足自己的需求。

像用户管理者一样,角色管理者中的一些方法也返回IdentityResult作为结果,而不是抛出一些情况下的异常。查看获取更多信息。

多租户

和用户管理相似,角色管理曾将也是在多租户应用中为单租户服务的。查看获取更多信息。

本文转自tkbSimplest博客园博客,原文链接:http://www.cnblogs.com/farb/p/ModuleZeroRoleManagement.html,如需转载请自行联系原作者

你可能感兴趣的文章
如何解决iOS界面操作导致导致NSTimer暂停计时的问题?
查看>>
Mac os x 系统的发展史
查看>>
WinForm基础
查看>>
初学类和对象
查看>>
XML 反序列化为Model
查看>>
一些感想
查看>>
SDL2 undefined reference to `SDL_Init' 问题
查看>>
蓝天集团董事长郎凤娥专访
查看>>
类成员与方法访问控制从严
查看>>
JSF是什么?它与Struts是什么关系?
查看>>
51 nod 1405 树的距离之和
查看>>
BZOJ 2733: [HNOI2012]永无乡
查看>>
spring 线程安全
查看>>
面试十大难题的样板回答
查看>>
梦断代码读后感(一)
查看>>
1489 蜥蜴和地下室
查看>>
Linux服务-bind
查看>>
SpringMVC系列(十六)Spring MVC与Struts2的对比
查看>>
20061008: IntelliJ Idea 6
查看>>
Android IOS WebRTC 音视频开发总结(四一)-- QQ和webrtc打洞能力pk
查看>>