私はかなりの数日間、Cookieに苦労しています。素晴らしい学習体験になりました。
だから、私が見つけて発見した可能な方法を共有したかった:フォーム認証 Cookie 名を変更するためのいくつかのハックがあります:
Global.asax の Application_Start イベントの Web.Config ファイルの Authenticaiton セクションで、Cookie 名の変更を自動化できます。これを共有してくれたロンに感謝します。しかし、アプリケーション ドメインを実行するために ID を使用するユーザーが、ディスク上のファイルを変更するのに十分な権限を持っているかどうかは保証できませんでした。したがって、即席の解決策が必要だったので、次のように考案しました。
FormsAuthentication クラスの内部を見せてくれた ILSpy に感謝します。また、クラスのプライベート フィールドを変更できるようにしてくれた Reflection に感謝します。次のコードを使用して、実行時に次の小さなコードでCookie名を変更しましたが、これは魅力的でした!!!
protected void Application_Start(Object sender, EventArgs e)
{
// This will enforce that FormsAuthentication class is loaded from configuration settings for the application.
FormsAuthentication.Initialize();
// The new cookie name whatever you need can go here, I needed some value from my application setting to be prefixed so I used it.
string newCookieName = string.Format("{0}.ASPXAUTH", ConfigurationManager.AppSettings["SomeSettingThatIsUniquetoSite"]);
// Modifying underlying baking field that points to FormsAuthentication.FormsCookieName
Type type = typeof(FormsAuthentication);
System.Reflection.FieldInfo field = type.GetField("_FormsName", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
field.SetValue(null, newCookieName);
}
これがこのフォーラムでの私の最初の回答であるため、提案、抜け穴が要求されます。