如何取出SPS某个区域中的所有用户并判断所有用户的权限
大家都知道SPS中的一个区域在对应一个SPWeb,Portal中的主页对应的是SPControl.GetContextSite.RootWeb,Portal站点相当与一个SPSite。
SPWeb中有两个关于区域用户的属性:AllUsers和SiteUsers
AllUsers对应所有现在登录到区域的用户;
SiteUsers对应的是所有属于这个区域的用户(包括了域组本身)不管是否登录;
通过以下代码可以验证:
foreach(SPWeb tempsite in SPControl.GetContextSite(Context).AllWebs)
{
if(tempsite.ID==new Guid("某个区域的Guid"))
{
labtest.Text+=tempsite.Title+"<br>";
labtest.Text+="----AllUsrs----<br>";
foreach(SPUser tempuser in tempsite.AllUsers)
{
if(!tempuser.IsDomainGroup)labtest.Text+=" "+tempuser.LoginName+":"+tempuser.Name+"<br>";
}
labtest.Text+="----SiteUsrs----<br>";
foreach(SPUser tempuser in tempsite.SiteUsers)
{
if(!tempuser.IsDomainGroup)labtest.Text+=" "+tempuser.LoginName+":"+tempuser.Name+"<br>";
}
}
}
所以如果想取某个区域中的所有用户并判断所有用户的权限的话可以:
1)取到区域的SiteUsers
2)对每个user运用DoesUserHavePermissions来判断(这个具体没有做过)可以到SDK中察看具体做法
SPWeb中有两个关于区域用户的属性:AllUsers和SiteUsers
AllUsers对应所有现在登录到区域的用户;
SiteUsers对应的是所有属于这个区域的用户(包括了域组本身)不管是否登录;
通过以下代码可以验证:
foreach(SPWeb tempsite in SPControl.GetContextSite(Context).AllWebs)
{
if(tempsite.ID==new Guid("某个区域的Guid"))
{
labtest.Text+=tempsite.Title+"<br>";
labtest.Text+="----AllUsrs----<br>";
foreach(SPUser tempuser in tempsite.AllUsers)
{
if(!tempuser.IsDomainGroup)labtest.Text+=" "+tempuser.LoginName+":"+tempuser.Name+"<br>";
}
labtest.Text+="----SiteUsrs----<br>";
foreach(SPUser tempuser in tempsite.SiteUsers)
{
if(!tempuser.IsDomainGroup)labtest.Text+=" "+tempuser.LoginName+":"+tempuser.Name+"<br>";
}
}
}
所以如果想取某个区域中的所有用户并判断所有用户的权限的话可以:
1)取到区域的SiteUsers
2)对每个user运用DoesUserHavePermissions来判断(这个具体没有做过)可以到SDK中察看具体做法