检查用户是否拥有网站集/网站的权限的最佳方法是什么?我目前正在使用以下
SPSecurity.RunWithElevatedPrivileges(
() => {using (var site = new SPSite(nodeUrl))
{
using (var web = site.OpenWeb())
{
retValue=
web.DoesUserHavePermissions(
context.User.Identity.Name,
SPBasePermissions.Open);
}
}
});
这似乎不正常。如果用户从未添加到网站,则此方法有效。但是,如果用户已添加然后被删除DoesUserHavePermission(.. SPBasePermission.Open)
仍然返回true,但是当用户尝试访问该站点时,SharePoint会抛出拒绝访问页面。
经过多一点挖掘后,我发现用户帐号仍在web.AllUsers
列表中,但没有分配角色。
答案 0 :(得分:3)
使用CheckPermissions
代替DoesUserHavePermissions
。请参阅SPWeb.CheckPermissions Method
。
答案 1 :(得分:1)
我执行类似的检查(循环检查权限的工作区列表),这是我使用的相关代码:
string LoginName = SPContext.Current.Web.CurrentUser.LoginName
bool permission = web.DoesUserHavePermissions(LoginName, SPBasePermissions.Open)
答案 2 :(得分:0)
我认为你走在正确的轨道上
SP用户是SiteCollection(站点)的成员,而不是Web的成员。
您需要再次检查Site.RootWeb
也来自你的代码,我认为你没有得到实际的上下文
SPContext.Current是正确的上下文
SPSecurity.RunWithElevatedPrivileges(
() => {using (var site = new SPSite(nodeUrl))
{
using (var web = site.OpenWeb())
{
retValue=
web.DoesUserHavePermissions(
context.User.Identity.Name,
SPBasePermissions.Open);
}
}
});
祝你好运