Sharepoint 检查指定用户是否属于特定组

Sharepoint 检查指定用户是否属于特定组,sharepoint,sharepoint-2013,csom,sharepoint-security,Sharepoint,Sharepoint 2013,Csom,Sharepoint Security,我在SharePoint exchange上发布了这个问题,但没有引起任何注意。任何帮助都将不胜感激 我已经实现了一个站点,并添加了一个名为“SG\u Uploader”的SharePoint组 在这个组中,我只有一个名为“AD_L6”的Active Directory组,并且在AD_L6中有许多用户 如果一个用户来到网站,我想检查他是否可以上传文档,我会使用下面的代码,非常简单: SPWeb web = // ... SPGroup group = web.SiteGroups["SG_Upl

我在SharePoint exchange上发布了这个问题,但没有引起任何注意。任何帮助都将不胜感激

我已经实现了一个站点,并添加了一个名为“
SG\u Uploader
”的SharePoint组

在这个组中,我只有一个名为“
AD_L6
”的Active Directory组,并且在AD_L6中有许多用户

如果一个用户来到网站,我想检查他是否可以上传文档,我会使用下面的代码,非常简单:

SPWeb web = // ...
SPGroup group = web.SiteGroups["SG_Uploader"];
if (group.ContainsCurrentUser)
{
    // allow user to upload
}
现在,我想做同样的事情,不是针对当前用户,而是针对我拥有用户名的特定用户。也就是说,我想写一个像

SPWeb web = // ...
SPGroup group = web.SiteGroups["SG_Uploader"];
if (group.ContainsUser(username))
{
    // allow user to upload
}
我想不出谁能做到这一点。请告知。

你可以这样做

  string userName = "PERSEUS\\dmitry.kaloshin";
        string groupName = "Home Members";
        using (SPSite spSite = new SPSite("http://perseus"))
        {
            using (SPWeb spWeb = spSite.OpenWeb())
            {
                SPUser user = spWeb.EnsureUser(userName);
                if (user.Groups.Cast<SPGroup>().Any(g => g.Name.Equals(groupName)))
                {
                    Console.WriteLine("User " + userName + " is a member of group " + groupName);
                }
                else
                {
                    Console.WriteLine("User " + userName + " is NOT a member of group " + groupName);
                }
            }
        }
string userName=“PERSEUS\\dmitry.kaloshin”;
string groupName=“主成员”;
使用(SPSite SPSite=new SPSite(“http://perseus"))
{
使用(SPWeb SPWeb=spSite.OpenWeb())
{
SPUser user=spWeb.EnsureUser(用户名);
if(user.Groups.Cast().Any(g=>g.Name.Equals(groupName)))
{
Console.WriteLine(“用户”+用户名+”是组“+组名”的成员);
}
其他的
{
Console.WriteLine(“用户”+用户名+”不是组“+组名”的成员);
}
}
}
访问

您可以这样做

  string userName = "PERSEUS\\dmitry.kaloshin";
        string groupName = "Home Members";
        using (SPSite spSite = new SPSite("http://perseus"))
        {
            using (SPWeb spWeb = spSite.OpenWeb())
            {
                SPUser user = spWeb.EnsureUser(userName);
                if (user.Groups.Cast<SPGroup>().Any(g => g.Name.Equals(groupName)))
                {
                    Console.WriteLine("User " + userName + " is a member of group " + groupName);
                }
                else
                {
                    Console.WriteLine("User " + userName + " is NOT a member of group " + groupName);
                }
            }
        }
string userName=“PERSEUS\\dmitry.kaloshin”;
string groupName=“主成员”;
使用(SPSite SPSite=new SPSite(“http://perseus"))
{
使用(SPWeb SPWeb=spSite.OpenWeb())
{
SPUser user=spWeb.EnsureUser(用户名);
if(user.Groups.Cast().Any(g=>g.Name.Equals(groupName)))
{
Console.WriteLine(“用户”+用户名+”是组“+组名”的成员);
}
其他的
{
Console.WriteLine(“用户”+用户名+”不是组“+组名”的成员);
}
}
}

请访问以下代码以供参考

var username = "user1";
var spGroupName = "SG_Uploader";
var adGroupName = "AD_L6";
using (SPSite spSite = new SPSite("http://sp2013/sites/team/"))
{
    using (SPWeb spWeb = spSite.OpenWeb())
    {
        SPUser user = spWeb.EnsureUser(adGroupName);
        if (user.Groups.Cast<SPGroup>().Any(g => g.Name.Equals(spGroupName)))
        {

            var principalContext = new PrincipalContext(ContextType.Domain);
            var group = GroupPrincipal.FindByIdentity(principalContext, adGroupName);
            var  isGroupMember = group.Members.Any(x => x.Name == username);
            if (isGroupMember)
            {
                Console.WriteLine("User " + username + " is a member of group " + spGroupName);
            }
            else 
            {
                Console.WriteLine("User " + username + " is not a member of group "+spGroupName);
            }

        }
    }
}
var username=“user1”;
var spGroupName=“SG_上传程序”;
var adGroupName=“AD_L6”;
使用(SPSite SPSite=new SPSite(“http://sp2013/sites/team/"))
{
使用(SPWeb SPWeb=spSite.OpenWeb())
{
SPUser user=spWeb.EnsureUser(adGroupName);
if(user.Groups.Cast().Any(g=>g.Name.Equals(spGroupName)))
{
var principalContext=新的principalContext(ContextType.Domain);
var group=GroupPrincipal.FindByIdentity(principalContext,adGroupName);
var isGroupMember=group.Members.Any(x=>x.Name==username);
if(isGroupMember)
{
Console.WriteLine(“用户”+用户名+”是组“+spGroupName”的成员);
}
其他的
{
Console.WriteLine(“用户”+用户名+”不是组“+spGroupName”的成员);
}
}
}
}

以下代码供您参考

var username = "user1";
var spGroupName = "SG_Uploader";
var adGroupName = "AD_L6";
using (SPSite spSite = new SPSite("http://sp2013/sites/team/"))
{
    using (SPWeb spWeb = spSite.OpenWeb())
    {
        SPUser user = spWeb.EnsureUser(adGroupName);
        if (user.Groups.Cast<SPGroup>().Any(g => g.Name.Equals(spGroupName)))
        {

            var principalContext = new PrincipalContext(ContextType.Domain);
            var group = GroupPrincipal.FindByIdentity(principalContext, adGroupName);
            var  isGroupMember = group.Members.Any(x => x.Name == username);
            if (isGroupMember)
            {
                Console.WriteLine("User " + username + " is a member of group " + spGroupName);
            }
            else 
            {
                Console.WriteLine("User " + username + " is not a member of group "+spGroupName);
            }

        }
    }
}
var username=“user1”;
var spGroupName=“SG_上传程序”;
var adGroupName=“AD_L6”;
使用(SPSite SPSite=new SPSite(“http://sp2013/sites/team/"))
{
使用(SPWeb SPWeb=spSite.OpenWeb())
{
SPUser user=spWeb.EnsureUser(adGroupName);
if(user.Groups.Cast().Any(g=>g.Name.Equals(spGroupName)))
{
var principalContext=新的principalContext(ContextType.Domain);
var group=GroupPrincipal.FindByIdentity(principalContext,adGroupName);
var isGroupMember=group.Members.Any(x=>x.Name==username);
if(isGroupMember)
{
Console.WriteLine(“用户”+用户名+”是组“+spGroupName”的成员);
}
其他的
{
Console.WriteLine(“用户”+用户名+”不是组“+spGroupName”的成员);
}
}
}
}

感谢您的回复。我尝试了这个精确的解决方案,但它不满足我的要求。感谢您的回复。我尝试了这个精确的解决方案,但它不满足我的要求。谢谢回复。这也不是答案,但是很有帮助。仅当username是adGroupName的直接成员时,它才起作用。如果不是,我必须使用递归函数来查找用户名是否是adGroupName的艺术。我不确定是否有更简单的方法。我担心在我的情况下,死气沉沉地调用广告功能可能会有性能问题+1如果您检查用户是否为广告组成员,我们必须使用某种方法连接广告。您知道该方法是什么吗?即使用户不是一个组的直接成员,它也能给我正确的结果吗。在我的例子中(在广告中),我有A组,A组有B组,B组有C组,用户是CThanks组的成员,需要回复。这也不是答案,但是很有帮助。仅当username是adGroupName的直接成员时,它才起作用。如果不是,我必须使用递归函数来查找用户名是否是adGroupName的艺术。我不确定是否有更简单的方法。我担心在我的情况下,死气沉沉地调用广告功能可能会有性能问题+1如果您检查用户是否为广告组成员,我们必须使用某种方法连接广告。您知道该方法是什么吗?即使用户不是一个组的直接成员,它也能给我正确的结果吗。在我的例子中(在广告中),我有A组,A组有B组,B组有C组,用户是C组的成员