2013-05-21 36 views
0

在Kentico管理區域內,可以使用「成員資格」功能將「角色」組合在一起。我已經構建了一個'自定義角色提供者',允許我通過API訪問Kentico數據庫,這一切都是正確的。kentico API - 使用成員資格分組角色

該API允許我訪問用戶的角色,這很好,但我理想的情況是我想訪問'會員',而不是通過API與其關聯的'角色'。 當我認證用戶訪問頁面/鏈接等我只需要調用組名稱,然後搜索映射找到相關的「角色」,然後授予或拒絕訪問。

有什麼辦法可以在API中做到這一點,我需要創建一個自定義的SQL字符串,並對數據庫執行它來提取我需要的數據?

回答

1

沒有開箱即用的功能。您將不得不利用提供的信息對象及其提供者。我創建了簡短的示例代碼來幫助您理解這個概念。

// Get user by name 
    UserInfo user = UserInfoProvider.GetUserInfo("testUser"); 

    // Get user-role bindings by user's identifier 
    InfoDataSet<UserRoleInfo> userRoles = UserRoleInfoProvider.GetUserRoles("UserID=" + user.UserID, null, -1, null); 
    Response.Write("User: " + user.UserName + "<br /><br />"); 

    // Enumerate through user-role binding 
    foreach (UserRoleInfo userRoleInfo in userRoles) 
    { 
     // Get role information based on role identifier 
     RoleInfo role = RoleInfoProvider.GetRoleInfo(userRoleInfo.RoleID); 
     Response.Write("User role: " + role.DisplayName + "<br />"); 

     // Get role-membership bindings using where condition 
     InfoDataSet<MembershipRoleInfo> membershipRoles = MembershipRoleInfoProvider.GetMembershipRoles("RoleID=" + role.RoleID, null, -1, null); 

     // Enumerate through role-membership bindings 
     foreach (MembershipRoleInfo membershipRoleInfo in membershipRoles) 
     { 
      // Get membership info using identifier 
      MembershipInfo membership = MembershipInfoProvider.GetMembershipInfo(membershipRoleInfo.MembershipID); 
      Response.Write("Role membership: " + membership.MembershipDisplayName + "<br />"); 
     } 

     Response.Write("<br />"); 
    } 
+0

感謝您的代碼。這是我通過API後所採取的方法。 –

相關問題