8

シンプルなページがあり、ログイン ボタンがあります。このページまたは他のページに再度移動したときに、現在のユーザー ID を取得できるように、プログラムでユーザー ID を設定したいだけです。これについて特別な考慮事項はありますか?

4

2 に答える 2

15

簡潔な答え:

//
// Swapped FormsIdentity principal with our own custom IPrincipal
//
HttpContext.Current.User = yourPrincipalFromSomewhere;

//see
//http://www.hanselman.com/blog/SystemThreadingThreadCurrentPrincipalVsSystemWebHttpContextCurrentUserOrWhyFormsAuthenticationCanBeSubtle.aspx

//
// Sync Context Principal with Thread Principal
//
System.Threading.Thread.CurrentPrincipal = System.Web.HttpContext.Current.User;

したがって、ログイン時に、私のチームは IPrincipal (カスタム プリンシパル) をここに配置します。

HttpContext.Current.Cache.Insert

そして、

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
}

から取得します:

HttpContext.Current.Cache

そして、それをに再接続します:

// Swapped FormsIdentity principal with our own IPrincipal
                            //
                            HttpContext.Current.User = cachedPrincipal;

                            //see
                            //http://www.hanselman.com/blog/SystemThreadingThreadCurrentPrincipalVsSystemWebHttpContextCurrentUserOrWhyFormsAuthenticationCanBeSubtle.aspx

                            //
                            // Sync Context Principal with Thread Principal
                            //
                            System.Threading.Thread.CurrentPrincipal = System.Web.HttpContext.Current.User;

「私のチームが行ったのとまったく同じように」と言っていますか? 必ずしも。しかし、それを取り付けるために出会った 2 つの場所を示しています。

そして、それに関するいくつかの情報を示す hanselman リンク。

http://www.hanselman.com/blog/SystemThreadingThreadCurrentPrincipalVsSystemWebHttpContextCurrentUserOrWhyFormsAuthenticationCanBeSubtle.aspx

于 2013-03-06T19:13:03.977 に答える
2

ユーザー ID を保存:

Session["UserId"] = loggedInUserId;

ユーザー ID を取得する

int loggedInUserId  = (int)Session["UserId"];

どのような特別な考慮事項について心配していますか? 具体的に。

于 2013-03-06T18:38:04.850 に答える