Forms Authentication.Set AuthCookie
12310 ワード
公式:http://technet.microsoft.com/zh-cn/magazine/twk5762b(VVS.80).aspx
参考転載:http://www.360doc.com/content/13/0614/13/9316347_292797003.shtml
この二日間はFormsを研究してユーザー検証をしていますが、それ自体はmsdnで調べてみたら、どのようなやり方が分かりますか?でも、私はテストの時にも生まれます。
いくつかの疑問
1.何か私はweb.co figのauthenticationノードのFormsにDommainを設置しました。Forms Authentication.Set AuthCookie(logine Name,false);
その後、HttpContect.Current.User.Identity.Nameの時はいつも私に戻ってきます。これは私を憂鬱にさせます。
2.configではだめです。コードの中でユーザークッキーのDomainを指定しますが、問題がまた発生しました。
a)まだIdentity.Nameの値が取れません。
b)ユーザが正常に終了しました。
私達がCookieのDomainに対して処理しない言葉なら、私の上で言った問題がありません。
一般的なやり方:
1,web.co nfigノードを設定する
string idenName=HttpConttext.Current.User.Identity.Name;
4.私たちはidenNameによってユーザーを判断することができます。もしidenName=""ならばログインページにジャンプしてユーザーを登録させます。そうでないとユーザーの名前をUIに表示します。
5.退出する時は、次の方法で結構です。
Forms Authentication.SignOut()
ここに来て、注意があるかどうかは分かりませんが、Cookie Domainを設定していません。これも私がやるべきことです。以上の方法を修正します。
1)変更方法:
1)
可能な理由は、cookieにサーバーとクライアントがあると思います。ですから、新しい検証チケットを作成して、以前の名前が無効になります。
参考転載:http://www.360doc.com/content/13/0614/13/9316347_292797003.shtml
この二日間はFormsを研究してユーザー検証をしていますが、それ自体はmsdnで調べてみたら、どのようなやり方が分かりますか?でも、私はテストの時にも生まれます。
いくつかの疑問
1.何か私はweb.co figのauthenticationノードのFormsにDommainを設置しました。Forms Authentication.Set AuthCookie(logine Name,false);
その後、HttpContect.Current.User.Identity.Nameの時はいつも私に戻ってきます。これは私を憂鬱にさせます。
2.configではだめです。コードの中でユーザークッキーのDomainを指定しますが、問題がまた発生しました。
a)まだIdentity.Nameの値が取れません。
b)ユーザが正常に終了しました。
私達がCookieのDomainに対して処理しない言葉なら、私の上で言った問題がありません。
一般的なやり方:
1,web.co nfigノードを設定する
<!--
<authentication> ASP.NET
,
。
-->
<authentication mode="Forms">
<forms name=".Bk5173"
protection="All"
timeout="30"
path="/"
requireSSL="false"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false">
</forms>
</authentication>
2.ユーザー名とパスワードが合法的であることを確認した後:// cookie
FormsAuthentication.SetAuthCookie(loginName, false);
3.前回はユーザーの名前をクッキーと書いて、その後はユーザーの名前を取得することができます。 string idenName=HttpConttext.Current.User.Identity.Name;
4.私たちはidenNameによってユーザーを判断することができます。もしidenName=""ならばログインページにジャンプしてユーザーを登録させます。そうでないとユーザーの名前をUIに表示します。
5.退出する時は、次の方法で結構です。
Forms Authentication.SignOut()
ここに来て、注意があるかどうかは分かりませんが、Cookie Domainを設定していません。これも私がやるべきことです。以上の方法を修正します。
1)変更方法:
// cookie
FormsAuthentication.SetAuthCookie(loginName, false);
以下の方法です// cookie
FormsAuthentication.SetAuthCookie(loginName, false);
// cookie
HttpCookie cookie = FormsAuthentication.GetAuthCookie(loginName, false);
// cookie cookie
// cookie
FormsAuthenticationTicket oldTicket = FormsAuthentication.Decrypt(cookie.Value);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(1,
oldTicket.Name,
oldTicket.IssueDate,
DateTime.Now.AddMinutes(30),
oldTicket.IsPersistent,
oldTicket.UserData,
FormsAuthentication.FormsCookiePath);
cookie.Domain = cookieDomain;
cookie.Value = FormsAuthentication.Encrypt(newTicket);
// cookie
HttpContext.Current.Response.SetCookie(cookie);
2)ユーザが退出した時の方法を変更する。HttpCookie cookie = HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName];
cookie.Domain = cookieDomain;
cookie.Value = null;
cookie.Expires = DateTime.Now.AddDays(-1);
// cookie
HttpContext.Current.Response.Cookies.SetCookie(cookie);
FormsAuthentication.SignOut();
以上のようにすれば、Identity.Nameは取得できません。分析と関連資料を調べて、上記の方法を修正します。 1)
// cookie
FormsAuthentication.SetAuthCookie(loginName, false);
// cookie
HttpCookie cookie = FormsAuthentication.GetAuthCookie(loginName, false);
// cookie cookie
// cookie
FormsAuthenticationTicket oldTicket = FormsAuthentication.Decrypt(cookie.Value);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(1,
oldTicket.Name,
oldTicket.IssueDate,
DateTime.Now.AddMinutes(30),
oldTicket.IsPersistent,
oldTicket.UserData,
FormsAuthentication.FormsCookiePath);
cookie.Domain = cookieDomain;
cookie.Value = FormsAuthentication.Encrypt(newTicket);
HttpContext.Current.Response.Cookies.Add(cookie);
2).
HttpCookie cookie = HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName];
cookie.Domain = cookieDomain;
cookie.Value = null;
cookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookie);
FormsAuthentication.SignOut();
これでユーザーはログインとログアウトを成功させることができます。 可能な理由は、cookieにサーバーとクライアントがあると思います。ですから、新しい検証チケットを作成して、以前の名前が無効になります。