2017-10-04 10 views
-1

電子メールとパスワードでフォーム認証を行った後、ユーザーIDを保存します。私は現在、そうするためにセッションを使用しています。認証後のストアID ASPネットWebフォーム

しかし、セッションとフォーム認証にはタイムアウトがあり、別のマシン上で別のユーザー名でログインすると、あるユーザーがログインしたときにセッションの種類が変数になります主要問題。

キャッシュ以外にも、これを達成するための方法はありますか?

答えて

0

拡張認証CookieにユーザーIDを格納できます。認証ルーチンコンカスタムクッキーには、応答に追加します。

var ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(60), false, userId.ToString())); 
HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)) { HttpOnly = true }); 

あなたが認証済み要求のためにそのクッキーを復号化し、ユーザIDが何であったかを知ることができます。

HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName]; 
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 
int iserId = int.Parse(authTicket.UserData); 
関連する問題