3

変な質問かもしれませんが、実現したいのは、特定のユーザーが別のユーザーとしてログインしているかのように SharePoint ページを表示できるようにする機能です。

Student ページと Staff ページがあるとします。私は学生ではありませんが、学生のように学生ページを表示できるようにログインしたいと考えています。それは理にかなっていますか?ある意味、擬人化。

偽装コードをいくつか見つけましたが、正常に動作しますが、それは私が望んでいるものではありません。別の SPWeb オブジェクトでユーザーを偽装することができました。しかし、アクティブな SPWeb オブジェクトの現在のユーザー コンテキストを変更するにはどうすればよいでしょうか。

これが私が持っているものです:

private void ImpersonateUser()
    {
        string siteURL = "http://mywebsite/";
        SPSite parentSite = new SPSite(siteURL);
        SPUserToken systemToken = parentSite.SystemAccount.UserToken;
        using (SPSite site = new SPSite(siteURL, systemToken))
        {
            using (SPWeb web = site.OpenWeb())
            {
                web.AllowUnsafeUpdates = true;
                OpenUserContext(web, siteURL, @"domain\studentuser");
            }
        }
    }

    private void OpenUserContext(SPWeb web, string siteURL, string user)
    {
        try
        {
            SPUser ensure = web.EnsureUser(user);
            SPSite impSite = new SPSite(siteURL, ensure.UserToken);
            SPWeb impWeb = impSite.OpenWeb();

            // Do something as impersonated user
            label1.Text = "Currently logged in as: " + impWeb.CurrentUser.ToString() + "(" + impWeb.CurrentUser.Name + ")";

        }
        catch (Exception ex) { label1.Text = ex.Message + "<br>" + user; }
    }

どうもありがとう。

4

2 に答える 2

0

偽装コードが SharePoint のカスタム .aspx ページの背後で実行されている場合、プログラムでxsltlistviewwebpartをページに追加して、偽装されたコンテキストで 1 つ以上のリスト ビューを表示できます。

于 2016-05-31T17:20:01.873 に答える
0

SharePoint では、ユーザーになりすましてコードを操作することはできますが、別のユーザーであるかのようにブラウズして表示することはサポートされていません。

ただし、カスタマイズをコーディングして、要望を考慮し、なりすましロジックを追加することはできます (ただし、それを実装するのはあなた次第であり、SP は役に立ちません)。Project Server は、あなたが求めているようなことを行いますが、Project Server 所有の要素に関してのみです。

于 2015-01-28T16:13:16.293 に答える