1

在创建项目时,我试图在 sharepoint 站点工作流 2010 中找到当前登录的用户。基于用户,我想检索当前用户的项目经理。每次尝试检索当前用户名时,它都会提供System Account

我什至尝试以其他用户身份登录,但仍将系统帐户显示为当前用户。

我尝试了以下选项:

SPUser user = workflowProperties.OriginatorUser;

SPUser user = SPContext.Current.Web.CurrentUser;


SPWeb web = SPContext.Current.Web;
SPUser user = web.CurrentUser;

 SPContext.Current.Web.CurrentUser.LoginName;

但一切都失败了。确定我做错了什么。我不知道正确的程序。一些程序给我空或对象引用未设置为对象或系统帐户详细信息的实例。我什至尝试过使用提升的权限,它给了我空值。

SPSecurity.CodeToRunElevated elevatedSubmit = new SPSecurity.CodeToRunElevated(delegate
        {
            //SPUser user = SPContext.Current.Web.CurrentUser;
            //string strAssignedTo = user.Name;

            string sspURL = "http://localhost/PWA/default.aspx";
            SPSite site = new SPSite(sspURL);
            SPWeb web = site.OpenWeb();
            SPUser theUser = web.CurrentUser;
            string strUserName = theUser.Name;
        });

        SPSecurity.RunWithElevatedPrivileges(elevatedSubmit);

在尝试通过工作流检索当前用户之前,我是否应该将用户显式添加为 SPUser 或任何其他更改?

4

2 回答 2

3

SharePoint 2010 获取当前用户名/登录用户

检查此 StackExchange 答案以及 获取当前用户与站点工作流交互

如果您想在登录时获取当前用户,可以尝试这样的事情

SPWeb webSite = SPControl.GetContextWeb(SPContext);
SPUser spUser = webSite.CurrentUser;
string strUserName = spUser.LoginName;

使用下面的这一行将返回OriginatorUser 但是如果您没有以管理员身份登录,您将获得系统帐户用户名

//This give the Login name e.g <domain>\<name>  
workflowProperties.OriginatorUser.LoginName;

** 注意 ** 我注意到在您的代码中,您尝试获取/分配用户两次,如果您决定使用您的代码,则只需要此行

SPUser user = SPContext.Current.Web.CurrentUser;
于 2013-01-24T20:59:43.317 回答
1

它似乎工作:

 SPUser user = this.workflowProperties.OriginatorUser;

RunWithElevatedPrivilegessystem account除了通过 reverto 调用获得的特权之外,还为您提供特权。

该代码是在SPSecurity.RunWithElevatedPrivileges方法上执行的吗?

这是我发现的另一个技巧:

string ModifiedbyUserName = Convert.ToString(workflowProperties.Item.GetFormattedValue("Modified By"));

看到这个:工作流程中的登录用户

有帮助有帮助!!

于 2013-01-25T05:07:55.087 回答