FormsAuthentication如何在请求上下文中保留会话以及哪些信息保持不变?

时间:2012-07-21 22:44:28

标签: c# asp.net asp.net-mvc

因此,我致电FormsAuthentication.SetAuthCookie(model.UserName, true)并重定向到[Authorize]品牌行动。现在HttpContext.Current.User.IdentityFormsIdentity,其属性告诉我我确实已登录。很棒。

现在我重新构建我的数据库,删除表并重新生成它们。 FormsAuthentication保留的名称甚至不再存在。但是当我刷新安全网站时,愚蠢的逻辑仍然问候我:Hello UserName 。好的......那很酷。

FormsAuthentication显然不依赖于我的数据存储。它是否在进程中存储会话信息?或者它是否将所有相关数据编码到身份验证票证中并让客户端将其保留在cookie中?

最后,机票是否与我的会员平台相关联?或HttpContext.Current.User.Identity.Name只是一个任意值?

2 个答案:

答案 0 :(得分:2)

所有相关数据都存储在身份验证票证中,并保存在客户端的cookie中。并且HttpContext.Current.User.Identity.Name也存储在另一个cookie中。您可以通过单击查看页面信息然后安全性来查看使用Firefox的cookie。你会看到2个cookie。其中一个是.ASPXAUTH(负责身份验证),另一个是.ASPXROLES(负责会员资格)。

答案 1 :(得分:1)

使用默认表单身份验证配置,成功登录后会向客户端发送cookie。 (有无cookie选项)

“每次在身份验证后收到后续请求时,FormsAuthenticationModule类都会从身份验证Cookie中检索身份验证票证,对其进行解密,计算哈希值,并比较MAC值以帮助确保Cookie未被篡改。“

您看到的是FormsAuthenticationModule发现请求有cookie。

以下链接是我刚才描述的流程的非常详细的概述。活动图对于了解每个请求会发生什么特别重要。

我希望有所帮助。

Explained: Forms Authentication in ASP.NET 2.0

克里斯

相关问题