0

所以,我打电话FormsAuthentication.SetAuthCookie(model.UserName, true)并重定向到[Authorize]品牌行动。现在HttpContext.Current.User.IdentityFormsIdentity其属性告诉我我确实已登录。太好了。

现在我改造我的数据库,删除表并重新生成它们。FormsAuthentication 保留的名称甚至不再存在。但是当我刷新安全网站时,愚蠢的逻辑仍然向我打招呼:Hello UserName。好吧……这很酷。

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

最后,门票是否与我的会员平台绑定?或者HttpContext.Current.User.Identity.Name只是一个任意值?

4

2 回答 2

2

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

于 2012-07-21T22:51:31.610 回答
1

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

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

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

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

我希望这会有所帮助。

解释:ASP.NET 2.0 中的表单身份验证

克里斯

于 2012-07-22T07:12:28.610 回答