简体   繁体   中英

How to get Current User in Sharepoint site workflow 2010?

Am trying to find the current logged user in sharepoint site workflow 2010 while creating a project. Based on the user, I would like to retrieve the current user's project manager. Every time am trying to retrieve current user name, it's giving System Account .

I even tried logging in as different user but still displaying System Account as the current user.

I tried following options :

SPUser user = workflowProperties.OriginatorUser;

SPUser user = SPContext.Current.Web.CurrentUser;


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

 SPContext.Current.Web.CurrentUser.LoginName;

But everything failed. Am sure that am doing something wrong. I don't know the correct procedure. Some procedures give me null or Object reference not set to an instance of the object or System Account details. I have even tried using elevated permission and its giving me null value.

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);

Am I supposed to add users explicitly as SPUser or any other changes before trying to retrieve current user via workflow ?

SharePoint 2010 Get Current Username / Logged in User

check this StackExchange answer as well Get the current user interacting with a site workflow

if you are wanting to get the current user when you log in you can try something like this

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

using this line below will return the OriginatorUser however if you are not logged in as Admin you will get the System Account UserName

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

** Note ** I noticed that in your code you are trying to get / assign user twice you should only need this line if you decide to use your code

SPUser user = SPContext.Current.Web.CurrentUser;

its seem to work :

 SPUser user = this.workflowProperties.OriginatorUser;

RunWithElevatedPrivileges gives you system account privileges in addition to the privileges you would get with a reverto call.

is that code executed on SPSecurity.RunWithElevatedPrivileges method ??

Here is a another trick that i found :

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

see this : logged-in user in workflow

Helps it helps!!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM