Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# kentico API-使用成员资格对角色进行分组_C#_Asp.net Mvc_Kentico - Fatal编程技术网

C# kentico API-使用成员资格对角色进行分组

C# kentico API-使用成员资格对角色进行分组,c#,asp.net-mvc,kentico,C#,Asp.net Mvc,Kentico,在Kentico管理区内,有一个使用“成员资格”功能将“角色”分组的设施。我已经建立了一个“自定义角色提供程序”,允许我通过API访问Kentico数据库,这一切都正常工作 API允许我访问用户的角色,这很好,但理想情况下,我希望通过API访问与其关联的“成员身份”和“角色”。 当我验证用户对页面/链接等的访问权限时,我只需调用组名,然后搜索映射以查找关联的“角色”,然后授予或拒绝访问权限 API中是否有任何方法可以做到这一点,我需要创建一个自定义SQL字符串并对数据库执行它以提取我需要的数据?

在Kentico管理区内,有一个使用“成员资格”功能将“角色”分组的设施。我已经建立了一个“自定义角色提供程序”,允许我通过API访问Kentico数据库,这一切都正常工作

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


API中是否有任何方法可以做到这一点,我需要创建一个自定义SQL字符串并对数据库执行它以提取我需要的数据?

没有现成的功能可以做到这一点。您必须利用提供的信息对象及其提供者。我创建了简短的示例代码来帮助您理解这个概念

    // 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 />");
    }
//按名称获取用户
UserInfo user=UserInfoProvider.GetUserInfo(“testUser”);
//按用户的标识符获取用户角色绑定
InfoDataSet userRoles=UserRoleInfo提供程序.GetUserRoles(“UserID=“+user.UserID,null,-1,null”);
响应。写入(“用户:+User.UserName+”

); //通过用户角色绑定枚举 foreach(UserRoleInfo用户角色中的UserRoleInfo) { //基于角色标识符获取角色信息 RoleInfo角色=RoleInfo提供者.GetRoleInfo(userRoleInfo.RoleID); 响应。写入(“用户角色:+role.DisplayName+”
); //使用where条件获取角色成员身份绑定 InfoDataSet membershipRoles=MembershipRoleInfoProvider.GetMembershipRoles(“RoleID=“+role.RoleID,null,-1,null”); //通过角色成员身份绑定枚举 foreach(MembershipRoleInfo成员角色中的MembershipRoleInfo) { //使用标识符获取成员资格信息 MembershipInfo membership=MembershipInfoProvider.GetMembershipInfo(membershipRoleInfo.MembershipID); 响应。写入(“角色成员身份:+membership.MembershipDisplayName+”
); } 响应。写入(“
”); }
谢谢你的代码。这是我在浏览API之后采取的方法。