1

プロジェクトの作成中に、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またはオブジェクト参照が表示されます。昇格されたアクセス許可を使用して、null値を取得しようとしたこともあります。

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

SharePoint2010現在のユーザー名の取得/ログインユーザー

この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;

**注**コードでユーザーを2回取得/割り当てようとしているので、コードを使用する場合にのみこの行が必要であることに気付きました

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

それはうまくいくようです:

 SPUser user = this.workflowProperties.OriginatorUser;

RunWithElevatedPrivilegessystem accountreverto呼び出しで取得する特権に加えて特権を提供します。

そのコードはSPSecurity.RunWithElevatedPrivilegesメソッドで実行されますか?

これが私が見つけた別のトリックです:

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

これを参照してください:ワークフローにログインしているユーザー

それが役立つのを助けます!

于 2013-01-25T05:07:55.087 に答える