2009-03-20 2 views
1

사용자 지정 멤버쉽 및 역할 공급자를 구축했습니다. 사용자는 회사에 속한 일부 고객이며 회사를 역할로 사용하고 있습니다.SharePoint 사용자 그룹의 Fba 역할

SharePoint 그룹을 만들고 여기에 더 많은 회사를 추가하고 (예 : 산업 유형) SPGroup에서 리디렉션 및 보안을 수행하고 싶습니다.

현재 로그인 한 사용자에 대해 SPGroup을 검색하는 방법은 무엇입니까?
내 사용자 정의 로그인 페이지에서이 문제를 해결하려면 로그인 이름을 알고있는 SPUser 또는 SPGroup을 어떻게 검색해야합니까?

이것은 내가 지금 무엇을 가지고 :


private List GetGroupsForUser(List roleAccounts) 
{ 
    List groups = new List(); 
    SPSecurity.RunWithElevatedPrivileges(
    delegate() 
    { 
     using (SPSite site = new SPSite(SPContext.Current.Web.Site.ID)) 
     { 
      SPUserCollection users = site.RootWeb.SiteUsers; 
      foreach (string account in roleAccounts) 
      { 
       SPGroupCollection accGroups = users[account].Groups; 
       foreach (SPGroup spg in groups) 
       { 
        groups.Add(spg); 
       } 
      } 
     } 
    } 
    ); 

    return groups; 

} 

private string GetRoleManagerName() 
{ 
    foreach (KeyValuePair setting in SPContext.Current.Site.WebApplication.IisSettings) 
    { 
     if (string.IsNullOrEmpty(setting.Value.RoleManager) == false) 
      return setting.Value.RoleManager.ToLower(); 
    } 
    return null; 
} 

private List GetSpAccounts() 
{ 
    List roleAccounts = new List(); 
    string roleProviderName = GetRoleManagerName(); 
    foreach (string role in Roles.GetRolesForUser(login.UserName)) 
    { 
     roleAccounts.Add(roleProviderName + ":" + role.ToLower()); 
    } 

    return roleAccounts; 
} 


// and now I can use it 
List roleAccounts = GetSpAccounts(); 
List groups = GetGroupsForUser(roleAccounts); 

하지만 난 수동으로 다음과 같이이 작업을 수행 할 필요가 없습니다해야 벌목 있습니다. 그룹에 역할 만 추가되면 대상 독자는 어떻게 작동합니까?

답변

2

SPUser 클래스의 OwnedGroups 속성을 사용하면 사용자가 소유 한 그룹의 컬렉션을 반환 할 수 있습니다. 그룹에 그 사용을 추가 SPContext.Current.Web.CurrentUser

  • :

    1. 은 현재 로그인 한 사용자 가져 오기 :

      업데이트는 질문을 오해 SPGroup.Users.Add를 ([사용자 이름] , [이메일], [이름], [메모]);

    업데이트는 세 번째로 매력입니다. 따라서 사용자가 가지고있는 역할에 따라 사용자가 속한 그룹을 찾고 싶습니까? 그것은 응답에서 위의 두 시도의 조합의 약간의 :

    var matched = from r in SPContext.Current.Web.CurrentUser.Roles 
           where r.Name = [Role] 
           select r.Groups; 
    
    역할 속성에서 SharePoint의 다음 버전에서 작동하지 않습니다

    중요! 개인적으로 SPContext.Current.Web.CurrentUser.Groups는 사용자가 속한 그룹을 쉽게 파악할 수 있다고 생각하지만 역할 요구 사항은 무시합니다.

  • +0

    답장을 보내 주셔서 감사하지만 SPContext.Current.Web.CurrentUser.Roles는 예외입니다. 더 이상 OnLoggedIn 이벤트의 로그인 페이지에서이 모든 작업을 수행하고 있지 않습니다. –