カスタムメンバーシップとロールプロバイダーを構築しました。ユーザーは会社に所属する一部のクライアントであり、私は役割として会社を使用しています。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は除外されています。もう1つは、OnLoggedInイベントのログインページでこれをすべてやっているということです。 –