사용자 지정 멤버쉽 및 역할 공급자를 구축했습니다. 사용자는 회사에 속한 일부 고객이며 회사를 역할로 사용하고 있습니다.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);
하지만 난 수동으로 다음과 같이이 작업을 수행 할 필요가 없습니다해야 벌목 있습니다. 그룹에 역할 만 추가되면 대상 독자는 어떻게 작동합니까?
답장을 보내 주셔서 감사하지만 SPContext.Current.Web.CurrentUser.Roles는 예외입니다. 더 이상 OnLoggedIn 이벤트의 로그인 페이지에서이 모든 작업을 수행하고 있지 않습니다. –