gpt4 book ai didi

security - 使用 RunWithElevatedPrivileges 时如何更改 "Modified By"?

转载 作者:行者123 更新时间:2023-12-03 23:34:42 24 4
gpt4 key购买 nike

我们有一个将文档上传到文档库的 Web 部件。上传文档的用户可能无法访问目标位置,因此添加文件的代码在 RunWithElevatedPrivileges 内执行。堵塞。这意味着“修改者”字段始终设置为系统帐户。这是代码:

SPSecurity.RunWithElevatedPrivileges(
delegate
{
using (SPSite elevatedSite = new SPSite(SPContext.Current.Site.Url))
using (SPWeb targetWeb = elevatedSite.OpenWeb(webUrl))
{
targetWeb.AllowUnsafeUpdates = true;
SPFile newFile = files.Add(filename, file);
SPListItem item = newFile.Item;

// TODO: Insert code to set Modified By

item.SystemUpdate();
}
}
}

“修改者”字段需要设置为当前用户的名称(在上面的 TODO 行),但以下尝试均无效:
item["Modified By"] = SPContext.Current.Web.CurrentUser;

item["Author"] = SPContext.Current.Web.CurrentUser;

item["Modified By"] = new SPFieldUserValue(
SPContext.Current.Web, SPContext.Current.Web.CurrentUser.ID,
SPContext.Current.Web.CurrentUser.Name);

item["Author"] = new SPFieldUserValue(
SPContext.Current.Web, SPContext.Current.Web.CurrentUser.ID,
SPContext.Current.Web.CurrentUser.Name);

有谁知道允许更改“修改者”值的解决方案?

最佳答案

我又做了一些测试...

item["Editor"] = SPContext.Current.Web.CurrentUser;
item["Author"] = SPContext.Current.Web.CurrentUser;
item.SystemUpdate();

创建者设置为当前用户,但修改者设置为系统帐户。
item["Editor"] = SPContext.Current.Web.CurrentUser;
item["Author"] = SPContext.Current.Web.CurrentUser;
item.Update();

创建者和修改者都设置为当前用户。

问题是使用 SPListItem.SystemUpdate()这与 API 文档所述的完全相反,至少在以提升的权限运行时是这样。

注:在 SPSecurity.RunWithElevatedPrivileges 中运行时,SPContext.Current.Web.CurrentUser 会选择当前用户而不是系统帐户。 (是否应该像这样使用是另一个问题。)

关于security - 使用 RunWithElevatedPrivileges 时如何更改 "Modified By"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/776579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com