如何在Sharepoint站点工作流2010中获取当前用户?

时间:2013-01-24 20:36:35

标签: c# sharepoint-2010 workflow

尝试在创建项目时在sharepoint站点工作流2010中找到当前登录的用户。根据用户,我想检索当前用户的项目经理。每次尝试检索当前用户名时,都会提供系统帐户

我甚至尝试以不同的用户身份登录,但仍然以当前用户身份显示系统帐户

我尝试了以下选项:

SPUser user = workflowProperties.OriginatorUser;

SPUser user = SPContext.Current.Web.CurrentUser;


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

 SPContext.Current.Web.CurrentUser.LoginName;

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

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或任何其他更改?

2 个答案:

答案 0 :(得分:3)

SharePoint 2010 Get Current Username / Logged in User

也检查这个StackExchange答案 Get the current user interacting with a site workflow

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

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;

答案 1 :(得分:1)

它似乎有效:

 SPUser user = this.workflowProperties.OriginatorUser;

RunWithElevatedPrivileges除了使用reverto电话获得的权限外,还会为您提供system account个权限。

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

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

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

请参阅:logged-in user in workflow

帮助它帮助!!