在Kentico管理区域内,可以使用“会员资格”功能将“角色”组合在一起。我已经构建了一个“自定义角色提供程序”,允许我通过API访问Kentico数据库,这一切都正常。
API允许我访问用户的角色,但我理想情况下我希望通过API访问“成员资格”和“角色”。 当我验证用户访问页面/链接等时,我只需要调用组名,然后搜索映射以查找关联的“角色”,然后授予或拒绝访问。
API中是否有任何方法可以执行此操作,我是否需要创建自定义SQL字符串并对数据库执行以提取我需要的数据?
答案 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 />");
}