gpt4 book ai didi

asp.net-mvc - 谁设置了 HttpContext.User.Identity 的 IsAuthenticated 属性

转载 作者:行者123 更新时间:2023-12-03 11:01:04 25 4
gpt4 key购买 nike

本代码来自asp.net mvc RTM源码

谁设置了 HttpContext.User.Identity 的 IsAuthenticated 属性?

   protected virtual bool AuthorizeCore(HttpContextBase httpContext) {
if (httpContext == null) {
throw new ArgumentNullException("httpContext");
}

IPrincipal user = httpContext.User;
if (!user.Identity.IsAuthenticated) {
return false;
}
}

IsAuthenticated 属性是否通过调用方法设置(asp.net mvc 4.0 示例项目):
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

当我调试 的代码时登录 上述 FormsAuth... 方法调用后的 asp.net mvc 4.0 示例项目的方法。的执行
User.Identity.IsAuthenticated

仍然返回 FALSE。只有当我调试 注销 方法
User.Identity.IsAuthenticated

说真的。那么谁将此属性设置为 TRUE 和 WHEN 呢?

更新 :

这大约是 表格 验证!

我现在确实调试了 asp.net mvc 示例项目的 LogOn 方法,在返回 LogOn 操作后,我已覆盖的 AuthorizeCore 方法被调用,然后 IsAuthenticated 属性为 TRUE!

TRUE 的设置是否取决于 ModelState.Value.Error 集合?

如果错误集合中的 count == 0,则 IsAuthenticated 为 TRUE
否则 IsAuthenticated 为 FALSE

你能证实吗?

最佳答案

此属性由表单例份验证模块通过读取和解析来自 的表单例份验证 cookie 来设置。请求 .我用粗体表示了请求,因为我怀疑这就是你观察这种行为的原因。让我解释。当您调用 FormsAuthentication.SetAuthCookie成功验证后,您将验证 cookie 添加到 回复 .此 cookie 将存储在客户端浏览器上,并将在 上发送。后续要求。因此,只有在后续请求中,用户才会被视为已通过身份验证。因此,您需要在调用 SetAuthCookie 方法后始终进行重定向。在调用此方法的请求中,您已经知道用户是否提供了正确的凭据,因此您无需检查 IsAuthenticated 属性。

关于asp.net-mvc - 谁设置了 HttpContext.User.Identity 的 IsAuthenticated 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8660539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com