10

我正在使用 Facebook C# SDK,并通过他们的 Facebook 帐户对用户进行身份验证。一旦我执行了所有检查以“验证”它们,我就会打电话给FormsAuthentication.SetAuthCookie(email, false);

执行该调用是否允许我User.Identity.IsAuthenticated在我的操作中访问?如果我不打那个电话呢?

我有一些操作将根据其身份验证状态返回不同的视图,并希望确保User.Identity.IsAuthenticated在 MVC 4 应用程序中是可靠的。

4

1 回答 1

16

注册并在每个请求上执行的是FormsAuthentication HTTP 模块。mode="Forms"当您在 web.config 的<authentication>标签中指定时,此模块会自动注册。正是这个模块拦截了所有 401 响应并自动将用户重定向到登录页面(有时这不是所需的行为,因为最终结果是 HTTP 状态代码 200)。

所以回答你的问题:

执行该调用是否允许我在我的操作中访问 User.Identity.IsAuthenticated?如果我不打那个电话呢?

不完全是。此调用仅向响应发出表单身份验证 cookie。负责拦截请求的是 HTTP 模块,如果此请求包含 cookie,它将设置User.Identity.

于 2012-08-10T06:11:36.053 回答