簡體   English   中英

如何在Sharepoint站點工作流2010中獲取當前用戶?

[英]How to get Current User in Sharepoint site workflow 2010?

我在創建項目時試圖在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或任何其他更改?

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;

它似乎工作:

 SPUser user = this.workflowProperties.OriginatorUser;

除了使用reverto調用獲得的權限外, RunWithElevatedPrivileges為您提供system account權限。

是在SPSecurity.RunWithElevatedPrivileges方法上執行的代碼?

這是我發現的另一個技巧:

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

看到這個: 工作流程中的登錄用戶

幫助它!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM