我使用的是Facebook C# SDK,我通过用户的Facebook帐户对用户进行身份验证。一旦我执行了所有检查以"验证"它们,我就会打电话给FormsAuthentication.SetAuthCookie(email, false);
执行该调用是否允许我在操作中访问User.Identity.IsAuthenticated
?如果我没有打那个电话呢?
我有一些操作将根据其身份验证状态返回不同的视图,并希望确保User.Identity.IsAuthenticated
在 MVC 4 应用程序中是可靠的。
它是注册的 FormsAuthentication HTTP 模块,并在每个请求上执行。当您在 web.config 的<authentication>
标记中指定mode="Forms"
时,将自动注册此模块。正是这个模块拦截所有 401 响应并自动将用户重定向到 LogOn 页面(有时这不是所需的行为,因为最终结果是 HTTP 状态代码 200)。
所以要回答你的问题:
执行该调用是否允许我访问 User.Identity.Is在我的操作中经过身份验证?如果我 没打那个电话?
不完全是。此调用仅向响应发出表单身份验证 cookie。HTTP模块负责拦截请求,如果此请求包含cookie,它将设置User.Identity
。