2013-05-21 25 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后所采取的方法。 –

相关问题