ブラウザを閉じた後も Cookie を保持するために必要な正確な手順は何ですか? 現時点で私は持っています:
createPersistentCookie
イベントに設定しtrue
ますLoggedIn
。- MachineKey が指定されました。
- フォームのスライド有効期限が に設定されました
true
。
ブラウザが開いている限り、ユーザーはログインしたままになりますが、ブラウザが閉じられるとすぐに、ユーザーはどのくらいの時間でも、再度ログインする必要があります。私は何が欠けていますか?
編集:
marapet によって指摘された記事 (以下のコメントを参照) を調べたところ、チケットに実際に IsPersistent フラグがあるかどうかに興味を持ちました。復号化されたチケットは次のよう
System.Web.Security.FormsAuthentication.Decrypt(Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName].Value)
{System.Web.Security.FormsAuthenticationTicket}
CookiePath: "/"
Expiration: {19/08/2010 17:27:14}
Expired: false
IsPersistent: true
IssueDate: {19/07/2010 17:27:14}
Name: "alex"
UserData: ""
Version: 2
になります。詳細はすべて正しく、LoggedIn イベントで設定した内容と一致しています。さらに、Cookie から直接取得できる Cookie 値は、これと同じです。しかし、ブラウザーを閉じるとすぐに、Cookie は失われます。
ただし、チケットを保持する Cookie の日付が何らかの理由でリセットされていることに気付きました。まず、web.config の設定をオーバーライドできないため、LoggedIn イベントの最後に Expires プロパティは、プログラムで設定している月ではなく、発行日から 4000 分後です。次に、ページの読み込み後、FormsAuthentication.FormsCookieName で取得した Cookie の Expires プロパティは 01/01/0001 です。おそらくここが問題だと思いますか?任意の考えをいただければ幸いです。
編集#2: 問題/解決策に関連していることが判明したため、セッションを含めるようにタイトルとタグの両方を変更しています