2012-01-12 52 views
4

私はASP.NET MVCアプリケーションを開発中です。私はいくつかの変更を加えて、最新バージョンのクッキーにいくつかの追加情報を保存しました。 私の顧客のうちのいくつかはまだ古いバージョンを実行しています。 既存の顧客の既存のCookieを期限切れにして、IISでホストされている新しいアプリケーションに接続するときに再度ログオンするように強制する方法はありますか?認証Cookieを削除する方法

おかげで、

+0

クッキーの日付をすでにある日付に設定しました....これはユーザーが再度ログインすることを保証します –

答えて

17

あなたはSignOut静的メソッドを使用することができます。

FormsAuthentication.SignOut(); 

これは、ユーザーを認証Cookieを削除し、以降ののリクエストになりますが、認証されません。このメソッドを呼び出すと、リダイレクトする必要があるので、私はその後のことを強調しました。

+0

この行をどこに置くべきですか?私は恐れて、この行を置くところでは、毎回ログオンするようにユーザーを強制するでしょう... –

+0

@SutikshanDubey、あなたは彼がそれにナビゲートするときに現在のユーザに署名したいと思っているコントローラアクションにこの行を入れます。 –

+0

これは実際には私のためには機能しませんでしたが、それは私をトレイルに置きました。私はaspnetdbを再構築しましたが、FormsAuthenticationCookieはまだブラウザにありました。私はその後、Request.Authenticated == trueのcatch-22でしたが、GetUser()はnullを返します。したがって、ログアウトするユーザーはいません。解決策は、ブラウザ上のすべてのクッキーを削除することでした。 –

4

私はweb.configファイルで私のクッキーに新しい名前を与えている、これは私の問題を解決するように見える: -

<forms loginUrl="~/Account/LogOn" name="InsightWebMobileCookie2" timeout="10000" slidingExpiration="true" /> 
1

ここでの問題は、あなたが知らないので、あなたはクッキーの有効期限を読み取ることができないです古いユーザーであるCookieから

だからあなたのオプションは次のとおりです。

  1. あなたは「古い」バージョンから誰であるかを見つけ出すことができれば - そのクッキーを期限切れにするロジックを持っています。
  2. 「VersionLogout」という名前のCookieを持っていない場合は、一度ログアウトするようにしてください。ログアウトを強制すると、例えば「VersionLogout」という名前のクッキーを値1.2で設定すると、特定のバージョンのログアウトを強制したことがわかります。

このコードをglobal.asaxのApplication_AuthenticateRequestイベントに配置します。この時点で、ユーザーは認証されているので、そこでCookieを確認できます。

関連する問題