Module Zero之角色管理
角色实体
角色实体代表了该应用的一个角色。它应该派生自AbpRole类,如下所示:
public class Role : AbpRole<Tenant, User>
{
//这里添加你自定义的角色属性
}
该类是当你安装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<Tenant, Role, User>
{
//这里可以添加自己的代码
}
你可以注入角色管理者,然后使用它创建,删除,更新角色,为用户授权以及更多。你可以在这里添加你自己的方法。而且,可以重写AbpRoleManager基类中的任何方法来满足自己的需求。
像用户管理者一样,角色管理者中的一些方法也返回IdentityResult作为结果,而不是抛出一些情况下的异常。查看《用户管理》获取更多信息。
多租户
和用户管理相似,角色管理曾将也是在多租户应用中为单租户服务的。查看《用户管理》获取更多信息。
如果您认为这篇文章还不错或者有所收获,您可以通过右边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【好文要顶】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力!
作者:tkb至简
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!
已将所有赞助者统一放到单独页面!签名处只保留最近10条赞助记录!查看赞助者列表
衷心感谢打赏者的厚爱与支持!也感谢点赞和评论的园友的支持! | |||
---|---|---|---|
打赏者 | 打赏金额 | 打赏日期 | |
微信:匿名 | 10.00 | 2017-08-03 | |
微信:匿名 | 10.00 | 2017-08-04 | |
微信:匿名 | 5.00 | 2017-06-15 | |
支付宝:一个名字499***@qq.com | 5.00 | 2017-06-14 | |
微信:匿名 | 16.00 | 2017-04-08 | |
支付宝:向京刘 | 10.00 | 2017-04-13 | |
微信:匿名 | 10.00 | 2017-003-08 | |
微信:匿名 | 5.00 | 2017-03-08 | |
支付宝:lll20001155 | 5.00 | 2017-03-03 | |
支付宝:她是一个弱女子 | 5.00 | 2017-03-02 |