2013-05-21 2 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를 거친 후 취한 접근 방식입니다. –