什么在ASP.NET MVC应用程序中设置User.Identity.IsAuthenticated?

Cha*_*eus 10 asp.net-mvc forms-authentication

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

执行该调用是否允许我访问User.Identity.IsAuthenticated我的操作?如果我没有打电话怎么办?

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

Dar*_*rov 15

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

那么回答你的问题:

执行该调用是否允许我在我的操作中访问User.Identity.IsAuthenticated?如果我没有打电话怎么办?

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

  • User.Identity永远不会为null.但是User.Identity.IsAuthenticated将是假的. (5认同)