类型资源,就是系统中所有者类型的资源只当做一个资源对待,例如Ornament的User,admin对所有的User的操作都是一致,而不是像普通资源那样,可以对某种资源的实例进行管理。
无论普通资源还是类型资源,我们都必须一开始就确定操作,Ornament的操作如下:
[Flags] public enum UserOperator { None = 0, Read = 1, Modify = 2 | 1, Lock = 4 | 1 | 2, Approve = 8 | 2 | 1, SetPassword = 16 | 1 | 2 | 4 | 8 }
定义资源
由于没有设定UI,因此在 Ornament.MVCWebFrame\Models\BaseDataInit.cs 文件中加入。
GenericResourceInfo<string> userResource = new GenericResourceInfo<string>("User", typeof(UserOperator)) { Name = "UserResource" }; var resDao = OrnamentContext.Current.MemberShipFactory.CreateResourceDao(); resDao.SaveOrUpdate(userResource);
创建许可证的资源选择器
因为创建许可证是可以由管理员创建的,因此需要制定一个UI给他们对相同类型的资源进行选择。
在Ornament中,已经有关于TypeResource的选择器,了参考Ornament.MVCWebFrame/Areas/MemberShips/Views/Permissions/TypeResourcesSelector.ascx。因此我们要告诉Ornament,这个选择器的位置,所以要在Ornament.MVCWebFrame/Config/WebCfg.config中设定。
创建一个ResourceDescription对象,xml的意思,请参考Castle的IOC容器,非常简单,不懂看也没有关系得。
<component id="resType" type="Ornament.Web.ResourceDescription,Ornament.Web.Core"> <parameters> <ValueType>System.String,mscorlib</ValueType> <Path>~/Areas/MemberShips/Views/Permissions/TypeResourcesSelector.ascx</Path> <Name>类型资源</Name> </parameters> </component>
然后加入到容器中,请留意${resType} 和 上面xml中的 id,他们是相同的。
<component id="Configuration" type="Ornament.Web.Configuration,Ornament.Web.Core"> <parameters> <resources> <list> <item>${resType}</item> <item>${resInfo}</item> </list> </resources> </parameters> </component>
创建Permission
输入URL /MemberShips/Permissions,或者在菜单“权限”->权限设定->许可设定,就会出现下面URL,然后点击添加,安装wizard一步步做就可以了
为Role分配Permission
输入URL,MemberShips/Role, 或者菜单中选择,”权限”-“角色”,然后就可以看到下面列表,点击编辑之后,就可以为角色分配有那几个Permission了。