0

我已经使用 Azure 网站几个月了,出于 SSL 的原因,我决定迁移到云服务。因为,我的项目中可能需要几个 Web 角色,所以我的会话管理需要是无状态的。

这就是我在项目中处理用户数据的方式。如果我需要用户相关数据,我会通过HttpContext.Current.User.Identity.Name. 使用此信息查询我的数据库以获取有关我的用户的信息。

这是正确的方法吗?我做了一些研究,但找不到关于HttpContext.Current.User来自哪里的真正明确的信息。

到目前为止,这是我所理解的。用户使用表单身份验证进行身份验证,该身份验证在用户 PC 中创建一个 cookie。当用户再次请求服务器时,服务器会检查 cookie 信息并使用它来填充 HttpContext 对象。如果其他 Web 角色之一下次接受请求,它是否可以使用该 cookie 来填充 HttpContext ?(这可能都是错误的,正如我所说,这是我从文档和网络上的其他答案中了解到的)

这就是我试图理解的基本内容。我希望我足够清楚地解释了我的问题。如果不清楚,请告诉我。

4

2 回答 2

2

我在多个 Web 角色上运行的 Azure 应用程序中使用 HttpContext.Current.User.Identity,并且禁用了 SessionState,没有任何问题。我已将其设置为使用 Cookie。

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogIn" cookieless="UseCookies" timeout="2880" />
</authentication>
于 2013-01-28T22:39:59.800 回答
2

我认为你的理解是正确的。当我们使用 FormAuthentication 时,登录后会生成一个 cookie,其中包含用户信息和令牌之类的加密。然后我们请求另一个页面,浏览器会将这个 cookie 发送到服务器,ASP.NET 将解密 cookie,验证并将用户信息填充到 HttpContext.Current.User 中,无论服务器端有多少实例。所以我认为在多实例的网络角色中使用 HttpContext.Current.User 是安全的。

于 2013-01-29T01:59:29.833 回答