gpt4 book ai didi

c# - 我的 FormsAuthenticationTicket 做错了什么?

转载 作者:行者123 更新时间:2023-11-30 22:48:48 28 4
gpt4 key购买 nike

我正在尝试重新创建我的 cookie,通常由 FormsAuthentication.SetAuthCookie() 生成的 cookie 以及 webconfig 中的内容。

<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" protection="All" timeout="20160" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="false" defaultUrl="default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>

但是,据我所知,我想再发送一条数据,我必须制作自己的 FormsAuthenticationTicket 才能添加此数据(或将其全部与 SetAuthCookie 中的用户名合并并进行拆分)。

所以我试图让它像从 webconfig 生成的一样安全(或更安全),具有与从 webconfig 生成的值相同的值。

这就是我目前所拥有的

 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "chobo2", DateTime.Now, DateTime.Now.AddYears(10), true, "test");
string encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));

但是我仍然不确定它在使用什么。它使用来自 webconfig 的东西吗?因为它不要求 cookieName 或超时。

当我通过 Web 开发人员查看此 cookie 时,它​​说它不安全,并且会在 session 结束时过期。

当我查看从 webconfig 生成的那个时,它的到期日期大约是 10 月 12 日,但仍然说不安全(猜测它指的是 SSL)。

此外,我仍然对 userData 感到困惑。我如何添加稍后获取此值?如何添加多于一次的数据?

我是否总是需要解密(即调用解密方法)来解密 cookie 还是自动执行。

无论如何,cookie 默认使用哪种加密?

谢谢

最佳答案

您需要在表单例份验证票证上手动设置所有这些属性。您可以通过 FormsAuthentication 类上的静态访问器访问大部分值。 web.config 中的配置设置仅在您使用 FormsAuthentication.GetAuthCookie 或 FormsAuthentication.SetAuthCookie 时使用。

可以通过提取和解密表单例份验证票证然后使用解密票证上的 UserData 属性访问器来检索用户数据。

您始终需要解密票证才能访问用户数据。

http://msdn.microsoft.com/en-us/library/ms998310.aspx包含有关使用的加密和验证密码的详细信息,但默认情况下,票证使用 AES 加密并使用 SHA1 (HMACSHA1) 验证。

http://support.microsoft.com/kb/910443包含更多信息和链接,可以回答您的任何其他问题。

关于c# - 我的 FormsAuthenticationTicket 做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1489192/

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