【问题标题】:How could I get access to the Audit log for non-admin users?我如何才能访问非管理员用户的审核日志?
【发布时间】:2011-03-02 19:00:25
【问题描述】:

我正在为 SharePoint 2010 构建一个 Web 部件,当我执行以下代码时,我发现非管理员用户收到 Access Denied 错误消息(最后一行中抛出了错误):

SPAuditQuery wssQuery = new SPAuditQuery(web.Site);
wssQuery.RestrictToUser(web.CurrentUser.ID);
wssQuery.AddEventRestriction(SPAuditEventType.View);
wssQuery.RestrictToList(SPContext.Current.List);

SPAuditEntryCollection auditCol;
auditCol = web.Site.Audit.GetEntries(wssQuery);

如何让非管理员用户从 Web 部件访问此日志?因为我需要按非管理员用户进行过滤,即使当时有非管理员用户登录。

【问题讨论】:

  • 您是否尝试将代码放入 RunWithElevatedPreviledges 中?
  • 不,不提前做任何事情......你认为它可能有效吗?
  • 好吧,事实证明这是解决此问题的最佳解决方案,如果需要,请自行发布解决方案。

标签: sharepoint-2010 web-parts


【解决方案1】:

.NET Reflector 告诉我SPAuditEntryCollection GetEntries(SPAuditQuery query) 方法在尝试检索数据之前会执行以下检查:

if (!this.m_Web.CurrentUser.IsSiteAdmin)
{
    throw new UnauthorizedAccessException();
}

你可以考虑:

  1. 直接查询dbo.AuditData 表(通常不鼓励直接访问 SharePoint 数据库,但您将只读访问,因此不会导致任何问题), p>

  2. 创建自定义 SharePoint Web 服务 - 这应该很简单,因为它需要做的就是执行 GetEntries 方法并返回结果。

【讨论】:

  • 这听起来很合理...我会尝试找到更好的解决方案,但同时我想我会尝试这两种方法中的任何一种。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多