2011-01-21 9 views
1

最近、サイトをClassic ASPからASP.Net 3.5に更新しました。ASP.NETメンバーシップユーザーログインエラーCookieの問題

古いサイトでは、Cookieベースのログインシステムを使用していました。 初めてログインしたときにチェックボックスが選択されていると、ユーザーのログイン情報が覚えています。これはもちろんクッキーで行われます。

次に、ASP.netを使用してサイトをアップグレードしました。 古いユーザーを組み込みのASP.netメンバーシップ認証に転送しました。

本当に奇妙なこと以外は素晴らしいです。 ユーザーがサイトにログインしてもログイン情報を格納していたサイトの古いCookieがあると、ASP.net認証がクラッシュするようです。

エラーメッセージはありません。いかなる種類の情報もありません。

ユーザーがログインしようとしましたが、エラーメッセージは表示されず、ログインページに戻されます。

古いクッキーを見ているようで、何をすべきか分かりません。

古いサイトと新しいサイトのドメイン名は同じです。

これは、以前に行ったことのない新しいユーザーには発生しません。

古いサイトのユーザーがブラウザでクッキーを消去した場合、正常にログインでき、エラーは再び発生しません。

ユーザーは5000人ですが、すべてのユーザーにCookieをクリアするように指示することはできません。

web.configの次のコード行で設定を変更しようとしました。

<authentication mode="Forms"> 
    <forms cookieless="UseCookies" loginUrl="~\User\Login.aspx" defaultUrl="~\Default.aspx" timeout="26280000" /> 
</authentication> 

しかし、それが助けられているかどうかはわかりません。

ご協力いただければ幸いです。

ありがとうございました

答えて

2

フォーム認証では、ログインはフォーム認証Cookieによって制御されます。だからあなたの古いクッキーがFACにどのように干渉しているのか分かりません。

カスタムクッキーにいくつかの値を格納する場合は、新しいコードのクッキーの名前を変更する方法があります。すなわち、コードが古いアプリケーションと同じ名前の「CookieA」を作成している場合は、それを「CookieB」に変更し、読み取っている間も同じです。

+0

は、それが動作しない、それを試してみました。古いCookieが新しいCookieに干渉してはならないことは分かっていますが、古いユーザーにログインさせる唯一の方法は、まずCookieをクリアすることです。他に何か起こっていることがありますか? – matwonk

+0

これを複製できるマシンはありますか?もしそうなら、火かき棒やその他のツールを使ってクッキーを調べることができます。また、コード内の古いCookieへの参照を削除してください。 – gbs

+0

私はついにそれを手に入れました。クッキーは同じ名前を使用していました。古いサイトは同じ名前を使用していましたが、小文字でも大文字の大文字を使用しているサイトでは大丈夫だと考えられていましたが、同じCookieと見なされました。 – matwonk

0

はクッキーにトークン名を指定します。

<forms name=".ASPXFORMSAUTH" ... />