gpt4 book ai didi

asp.net-mvc - 我可以动态更改 asp.net 中的 FormsAuthentication cookie 名称吗?

转载 作者:行者123 更新时间:2023-12-02 01:09:49 27 4
gpt4 key购买 nike

我想动态设置 FormsAuthentication cookie 名称,例如 guid。我怎样才能做到这一点。我已经可以在 web.config 中将其更改为我想要的任何内容。我只是无法在代码和动态中做到这一点。请帮忙。

<authentication mode="Forms">
<forms name="myName" loginUrl="~/Account/Login" defaultUrl="~/Admin/admin" cookieless="UseCookies" slidingExpiration="true" timeout="40320"/>
</authentication>

我想要这样做的原因是,我在同一台主机上有我的应用程序的多个实例,我不希望它们覆盖彼此的 cookie。

最佳答案

我已经为 Cookies 苦苦挣扎了好几天。这是一次很棒的学习经历。

所以想分享我发现和发现的可能方法:有几个 HACK 可以修改 Forms Authentication Cookie 名称:

  1. 您可以在 Global.asax 的 Application_Start 事件中的 Web.Config 文件的 Authenticaiton 部分下自动修改 cookie 名称。感谢罗恩分享this .但我无法保证其身份将用于运行应用程序域的用户是否有足够的权限修改磁盘上的文件。因此我需要一个临时的解决方案,所以我设计了以下内容。

  2. 感谢 ILSpy 让我看到 FormsAuthentication 类的内部,非常感谢 Reflection 让我修改类的私有(private)字段。我使用以下代码通过以下一小段代码在运行时修改 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);
}

第一次在本论坛回答,求建议,求漏洞

关于asp.net-mvc - 我可以动态更改 asp.net 中的 FormsAuthentication cookie 名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18683039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com