kentico API - 使用成员资格分组角色

时间:2013-05-21 10:37:27

标签: c# asp.net-mvc kentico

在Kentico管理区域内,可以使用“会员资格”功能将“角色”组合在一起。我已经构建了一个“自定义角色提供程序”,允许我通过API访问Kentico数据库,这一切都正常。

API允许我访问用户的角色,但我理想情况下我希望通过API访问“成员资格”和“角色”。 当我验证用户访问页面/链接等时,我只需要调用组名,然后搜索映射以查找关联的“角色”,然后授予或拒绝访问。

API中是否有任何方法可以执行此操作,我是否需要创建自定义SQL字符串并对数据库执行以提取我需要的数据?

1 个答案:

答案 0 :(得分: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 />");
    }