- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试重新创建我的 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/
我是一名优秀的程序员,十分优秀!