久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

SPB-可配置服務(wù)-權(quán)限

來自站長百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

導(dǎo)航: 上一頁

SPB的權(quán)限是通過用戶角色、用戶級別進(jìn)行設(shè)置的,一個用戶可以具有多個角色,和一個用戶級別,因此一個用戶的權(quán)限是由用戶角色及用戶級別的權(quán)限合并得到的。權(quán)限合并時需要遵循以下原則:

  1. 禁止優(yōu)先;
  2. 允許的權(quán)限取合集;
  3. 權(quán)限額度取最大;

一、角色

SPB的角色可以自由添加,分為兩種類型:

  1. 普通角色(例如:SystemAdministrator):可以直接把用戶賦予某一個或多個普通角色
  2. 虛擬角色(例如:Owner):不能把用戶賦予虛擬角色,程序的默認(rèn)設(shè)計或者通過在具體上下文環(huán)境中經(jīng)過計算得到的角色

SPB的角色分為全局使用及個別應(yīng)用使用,例如:SystemAdministrator屬于全局,ClubMember僅屬于圈子。

例如:

Spacebuilder099.jpg

添加新的角色時需要擴展SpaceBuilder.Common.UserRoleNames.

例如

/// <summary>
    /// Club中用戶角色擴展
    /// </summary>
    public static class UserRoleNamesExtensions
    {
        /// <summary>
        /// 圈子管理員
        ///</summary>
        public static string ClubManager(this UserRoleNames userRoleNames)
        {
            return "ClubManager";
        }

        /// <summary>
        /// 圈子成員
        ///</summary>
        public static string ClubMember(this UserRoleNames userRoleNames)
        {
            return "ClubMember";
        }
        
}

二、用戶級別

類似用戶組,每個用戶只能屬于一個用戶級別。用戶級別根據(jù)用戶綜合積分遞增。

:用戶級別可以考慮增加個性展示的功能,比如使用不同的圖片、顏色;

三、權(quán)限項目(PermissionItems)及配置

  • 權(quán)限項目

權(quán)限項目是指在我們的應(yīng)用中哪些操作需要進(jìn)行權(quán)限控制,把需要進(jìn)行權(quán)限控制的操作項通過編碼(ItemKey)的方式存入PermissionItems。并且可以設(shè)置哪些權(quán)限項目需要在用戶角色中進(jìn)行配置、哪些權(quán)限項目需要在用戶級別中進(jìn)行配置。進(jìn)行權(quán)限配置時除了可以設(shè)置是否可以進(jìn)行某項操作以外,還可以設(shè)置權(quán)限額度(例如:級別1和級別2的用戶都有上傳附件的權(quán)限,但是級別1的用戶上傳附件只能上傳1M的附件,而級別2的用戶可以上傳5M的附件)。

示例

Spacebuilder0100.jpg

注意

  1. ItemKey必須唯一;
  2. 啟用權(quán)限設(shè)置時,權(quán)限額度才有作用,如果啟用權(quán)限額度則設(shè)置權(quán)限時允許設(shè)置所允許權(quán)限的具體數(shù)值;
  3. 權(quán)限項目用于與用戶角色和用戶級別關(guān)聯(lián)來設(shè)置相應(yīng)的權(quán)限;
  • 權(quán)限項目與角色及用戶級別配置

Spacebuilder0101.jpg

配置說明:

  1. 配置包括:未設(shè)置、允許、禁止 三種配置,其中未設(shè)置在以上表格中用“---”表示;
  2. 另外還有是否鎖定的設(shè)置,即某項配置是否允許在后臺進(jìn)行修改,如果不允許管理員修改則可以設(shè)置成“鎖定”;

四、如何使用權(quán)限

論壇為例,進(jìn)行說明:

  • 首先分析有哪些功能,這些功能產(chǎn)生哪些操作。論壇包含:查看論壇主題、創(chuàng)建論壇主題、上傳論壇附件等操作。
  • 另外分析論壇是否需要加入新的用戶角色,經(jīng)過分析需要加入論壇版主的角色。

Spacebuilder0102.jpg

生成加入角色的sql腳本.

例如

INSERT dbo.spb_Roles (RoleID, RoleName, LoweredRoleName, FriendlyRoleName, 
IsBuiltIn, ConnectToUser, ApplicationID, Description, Enabled) VALUES (7, N'Moderator', N'moderator', N'版主', 1, 0, 211, N'', 1) 
利用擴展方法定義SpaceBuilder.Common.UserRoleNames的擴展,注意保持Moderator()方法的返回值與上邊sql腳本中的RoleName一致。

/// <summary>
    /// Forum中用戶角色擴展
    /// </summary>
    public static class UserRoleNamesExtensions
    {
        /// <summary>
        /// 論壇版主
        /// </summary>
        public static string Moderator(this UserRoleNames userRoleNames)
        {
            return "Moderator";
        }    
    }
  • 分析這些操作是否涉及到權(quán)限控制,涉及到權(quán)限控制的操作設(shè)置成權(quán)限項目并定義ItemKey,例如:ViewForumThread(查看論壇主題)、CreateForumThread(創(chuàng)建論壇主題)、UploadForumAttachment(上傳論壇附件),一定確保ItemKey不會重復(fù)。分析哪些權(quán)限項目需要權(quán)限額度(比如允許上傳圖片,但是僅允許上傳100M),哪些權(quán)限項目需要根據(jù)用戶級別的不同而不同(即是否允許在用戶級別中配置);
  • 生成權(quán)限配置的初始化sql腳本.

例如

INSERT [dbo].[spb_PermissionItems] ([ItemID], [ApplicationID], [ItemKey], 
[ItemName], [DisplayOrder], [EnabledPermissionLine], [EnabledInUserRole],
 [EnabledInUserRank]) VALUES (15, 211, N'CreateForumThread', N'發(fā)布主題', 104, 0, 1, 0)

INSERT [dbo].[spb_PermissionItems] ([ItemID], [ApplicationID], [ItemKey], [ItemName], 
[DisplayOrder], [EnabledPermissionLine], [EnabledInUserRole], [EnabledInUserRank]) VALUES 
(18, 211, N'UploadForumAttachment', N'上傳附件', 107, 1, 1, 1)

INSERT [dbo].[spb_PermissionItemRolesInUserRoles] ([ItemID], [RoleID], 
[AllowType], [AllowedValue], [IsLocked]) VALUES (38, 1, 1, 0, 1)

INSERT [dbo].[spb_PermissionItemRolesInUserRoles] ([ItemID], [RoleID],
 [AllowType], [AllowedValue], [IsLocked]) VALUES (38, 2, 1, 0, 1
)
  • 定義權(quán)限驗證業(yè)務(wù)邏輯類:SpaceBuilder.Forum.ForumPermission。該權(quán)限驗證類主要有兩個目的:
  1. 獲得用戶在該上下文中的所有權(quán)限,包括虛擬角色。例如需要判定用戶在某個版塊是否具備版主的用戶角色;
  2. 該應(yīng)用獨有的權(quán)限驗證邏輯。例如:主題鎖定則不允許回復(fù);
  • 在Controller中調(diào)用SpaceBuilder.Forum.ForumPermission進(jìn)行權(quán)限判定及驗證;


參考資料[ ]