Fba角色与SharePoint用户组

时间:2009-03-20 11:39:21

标签: sharepoint moss forms-authentication

我已经构建了自定义成员资格和角色提供程序。用户是属于公司的一些客户,我使用公司作为角色。

我想创建SharePoint Group并向其添加更多公司(例如行业类型),然后通过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);

但我有一种感觉,我不应该像这样手动这样做。如果只将角色添加到组中,目标受众将如何工作?

1 个答案:

答案 0 :(得分:2)

使用SPUser类的OwnedGroups属性返回用户拥有的组的集合。

更新误解了这个问题:

    <击>
  1. 获取当前登录的用户:SPContext.Current.Web.CurrentUser
  2. 将该用途添加到组:SPGroup.Users.Add([username],[email],[name],[notes]);
  3. 更新,第三次魅力。那么你想根据他们的角色找出用户所在的群组? 这是上述两次回答尝试的结合:

    var matched = from r in SPContext.Current.Web.CurrentUser.Roles
                  where r.Name = [Role]
                  select r.Groups;
    

    重要提示,Roles属性在下一版本的SharePoint中不起作用! 我个人认为SPContext.Current.Web.CurrentUser.Groups可以更容易地找出用户所在的组,但它忽略了你的角色要求。