2012-01-30 6 views
5

ログインに成功すると、ユーザー名を含むCookieを保存します。クッキーを保存するとセッションが失われる

クッキーは正しく保存され、ユーザー名は正しく読み込まれますが、セッションは失われます。

ユーザー名を盗んするコードされています。ユーザー名を保存するためのコードがある

if (Request.Cookies["userName"] != null) 
{ 
    txtEmail.Text = Request.Cookies["username"].Value; 
    chkRemember.Checked = true; 
} 

HttpCookie aCookie = new HttpCookie("username"); 
aCookie.Value = txtEmail.Text; 
aCookie.Expires = DateTime.Now.AddYears(5); 
Response.Cookies.Add(aCookie); 

すべてのヘルプは大歓迎されます、あなたの野生のショットの

+3

セッションとはどういう意味ですか? ASP.NETセッション?または、認証セッションを作成しますか?また、あなたはどんな行動をしていますか?その間にブラウザを閉じていますか? –

+0

ログインフォームから次のフォームにナビゲートするときに、ASP.NETセッションがリセットされています。これは上記のコードを追加した後です。 –

+0

上記のコードはログインフォームか他の場所にありますか? – M3NTA7

答えて

1

は、私はこれに見ていないが、それはチェックする価値があるかもしれません。

また、ユーザーが覚えていない場合は、Cookieを消去していますか?

最近MSDNでセッションをゴミ箱にするdeleteメソッドを表示している古い例を見てきました。read the article

そうしないと、ログイン用にCookieを削除しないと、セッションIDを含むCookieが失われている可能性があります。商品コードのCSHARPに

A(非常に)迅速な翻訳:クッキー名のチェックを追加する解された状態で

for (int i = 0; i < limit; i++) 
    { 
     cookieName = Request.Cookies[i].Name; 
     aCookie = new HttpCookie(cookieName); 
     aCookie.Expires = DateTime.Now.AddDays(-1); 
     Response.Cookies.Add(aCookie); 
    } 

for (int i = 0; i < limit; i++) 
    { 
     cookieName = Request.Cookies[i].Name; 
     if (cookieName == "username") 
     { 
      aCookie = new HttpCookie(cookieName); 
      aCookie.Expires = DateTime.Now.AddDays(-1); 
      Response.Cookies.Add(aCookie); 
     } 
    } 

また、Cookie内でサブキーを使用することもできます。

+0

ありがとうございます。私はunsernameクッキーを覚えていないときにセッション変数が失われていました。私はセッションIDを含むすべてのクッキーオブジェクトを削除していました。ありがとうございました。 –

2

ビットをありがとう、あなたはhttpsからhttpに移行していますか?例えば。ログインフォームがhttpsで、次のページがhttp

の場合、ほとんどのブラウザはセッションCookieを捨てます。私はページ名にアンダースコアがクッキーに問題を引き起こす可能性があることを示唆している最近の記事を見た

おかげで、 フラン

+0

httpsを使用していない場合、これは適用されません。ありがとうございました。 –

関連する問題