gpt4 book ai didi

sharepoint - 在 webpart 代码中冒充不同的用户

转载 作者:行者123 更新时间:2023-12-01 22:58:31 27 4
gpt4 key购买 nike

我使用共享点列表作为数据库。
我想以某种方式在 webpart 代码中冒充不同的用户
而作为这个用户,我将同时拥有列表的写入和编辑权限。

我的目标是能够仅通过 webpart 代码获得全部权限。

我正在使用 MOSS 2007。

最佳答案

SPSecurity.RunWithElevatedPrivileges() 将作为系统帐户执行您的代码,即运行应用程序池的帐户,这可能是也可能不是您想要做的。例如,如果您有一个附加到列表的工作流,该工作流应该在新项目添加到列表时触发,如果您在系统帐户的凭据下插入新的列表项目(这是一个安全修复程序),它将不会触发SharePoint 2007 SP 1 中引入)。在这种情况下,您必须在列表中具有正确权限的不同帐户下执行插入操作。

您可以使用以下代码为任何用户获取 UserToken:

        SPUserToken userToken = null;
SPSecurity.RunWithElevatedPrivileges(() =>
{
using (SPSite site = new SPSite(SPContext.Current.Site.ID))
{
using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
{
userToken = web.AllUsers["domain\\username"].UserToken;
}
}
});

用正确的 Windows 帐户名替换“域\用户名”。然后,您可以将此用户 token 传递给 SPSite 对象构造函数的重载之一,以在此用户的凭据下执行代码,如下所示:
        using (SPSite site = new SPSite(SPContext.Current.Site.ID, userToken))
{
using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
{
// This code will execute under the credentials of the userToken user
}
}

希望这可以帮助。

关于sharepoint - 在 webpart 代码中冒充不同的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5164626/

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