检查当前用户';s权限(如果用户在SharePoint中没有枚举权限)
如我们所知,我们可以通过以下方式检查用户的权限:检查当前用户';s权限(如果用户在SharePoint中没有枚举权限),sharepoint,Sharepoint,如我们所知,我们可以通过以下方式检查用户的权限: using (SPWeb web = site.OpenWeb(path)) { SPUser user = SPContext.Current.Web.CurrentUser; string loginName = user.LoginName; if (web.DoesUserHavePermissi
using (SPWeb web = site.OpenWeb(path))
{
SPUser user = SPContext.Current.Web.CurrentUser;
string loginName = user.LoginName;
if (web.DoesUserHavePermissions(SPBasePermissions.EnumeratePermissions))
{
if (web.DoesUserHavePermissions(user.LoginName, SPBasePermissions.Open))
{
//do something
}
}
}
我的问题是,如果当前用户没有枚举权限,如何获取SharePoint对象的权限?提前感谢。您可以通过打开一个“admin”web实例(创建一个
SPSite
对象并向其传递系统帐户的用户令牌)来完成此操作。这样,您就不必担心当前用户是否拥有足够的权限
SPUserToken adminToken = SPContext.Current.Web.AllUsers["SHAREPOINT\\System"].UserToken;
using (SPSite adminSite= new SPSite(SPContext.Current.Site.ID, adminToken) ) {
using (SPWeb adminWeb = adminSite.OpenWeb(SPContext.Current.Web.ID)){
if (adminWeb.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.Open)) {
//do something
}
}
}
当然,最好不要在每次加载页面时都这样做,因为创建和处理SPSite/SPWeb对象的成本相对较高。这里我定义了一个函数,该函数接受SharePoint列表对象、角色类型和用户
- 门户:sharepoint列表或文档库对象
- 角色:sharepoint提供的角色类型,如阅读、设计等
- 用户:要向其授予门户上角色的用户
public static void AssignPermissionToPortal(string portal, SPRoleType role, SPUser user)
{
try
{
// Run with elevated privileges
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SPContext.Current.Web.Site.ID))
{
using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
{
web.AllowUnsafeUpdates = true;
SPList portalList = SPListHelper.GetSPList(portal, web);
portalList.BreakRoleInheritance(false);
//Add Readers on portal
SPRoleDefinition permission = web.RoleDefinitions["Read"];
if (role == SPRoleType.Administrator)
permission = web.RoleDefinitions["Full control"];
else if (role == SPRoleType.Contributor)
permission = web.RoleDefinitions["Contribute"];
else if (role == SPRoleType.WebDesigner)
permission = web.RoleDefinitions["Design"];
else
permission = web.RoleDefinitions["Read"];
// Check the user Role on site level.
SPUser roleUser = uHelper.GetUserById(user.ID);
if (roleUser != null)
{
SPRoleAssignment assignment = new SPRoleAssignment(roleUser);
assignment.RoleDefinitionBindings.Add(permission);
portalList.RoleAssignments.Add(assignment);
portalList.Update();
}
web.AllowUnsafeUpdates = false;
}
}
});
}
catch (Exception ex)
{
Log.WriteException(ex);
}
}
@bzlm我指的是SharePoint权限,如“读取”、“仅查看”、“完全控制”等。如果您愿意,我们可以将其移动到我们的SharePoint网站,在那里您可能会得到更好的答案。如果要执行此操作,请标记或@message me@Kev♦ 我很高兴你能为我做这件事。