匿名の Cookie をクリアする API はありますか?
4 に答える
はい!
System.Web.Security.AnonymousIdentificationModule.ClearAnonymousIdentifier()
この便利な記事を参照してください: (匿名ユーザー設定の移行)
匿名プロファイルを移行するための最良の方法もスタックオーバーフローの質問です。
最初は「AnonymousIdentificationModule.ClearAnonymousIdentifier()」の問題に直面していました。エラーは「機能が無効になっている場合、またはユーザーが匿名の場合、ClearAnonymousIdentifierはサポートされていません」でした。
この問題は、ユーザーitsefが匿名ユーザーであるときに匿名IDをクリアしようとした場合にのみ発生します。匿名ユーザーが他の匿名ユーザーのCookieをクリアできないことを意味します。
これを行うには、ユーザーが認証された(ログインしたユーザー)場合に次のようなコードを配置します。
if(Request.IsAuthenticated)
{
AnonymousIdentificationModule.ClearAnonymousIdentifier();
}
これでうまくいきます。
私は MVC4 を使用しています。私のシナリオでは、ユーザーがログインしなくても新しい Cookie が自動生成されるように、匿名の Cookie を削除できるようにしたいと考えています。 AnonymousIdentificationModule.ClearAnonymousIdentifier は、ユーザーが認証されている場合にのみ呼び出すことができるため、このシナリオでは機能しません。(その関数へのオプションのパラメータがいいようです。) その代わりに、過去の有効期限で匿名の Cookie を書き換える必要があります。これを行うには、匿名ユーザーが必要なときにいつでもアクセスして、新しい匿名ユーザーとして再起動できる基本的なアクション メソッドを作成しました。
[HttpGet]
[AllowAnonymous]
public ActionResult ClearMyCookie()
{
HttpCookie cookie = new HttpCookie(".ASPXANONYMOUS");
cookie.Expires = DateTime.Now.AddDays(-10);
Response.Cookies.Add(cookie);
// Make sure to also do Session.Clear() if you're using session.
return RedirectToAction("index", "home");
}
「.ASPXANONYMOUS」を Cookie の名前に変更します。上記のデフォルトの匿名名を使用しています。
これがあなたの求めているものかどうかはわかりませんが、次のようにしてブラウザに送信されたすべての Cookie をクリアできます。
Response.Cookies.Clear();
認証に問題がある場合は、質問を明確にすることをお勧めします。