加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 谁设置HttpContext.User.Identity的IsAuthentica

发布时间:2020-12-16 00:34:28 所属栏目:asp.Net 来源:网络整理
导读:这段代码来自asp.net mvc RTM源代码 谁设置HttpContext.User.Identity的IsAuthenticated属性? protected virtual bool AuthorizeCore(HttpContextBase httpContext) { if (httpContext == null) { throw new ArgumentNullException("httpContext"); } IPrin
这段代码来自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;
        }
    }

通过调用方法(asp.net mvc 4.0示例项目)设置IsAuthenticated属性:

FormsAuthentication.SetAuthCookie(model.UserName,model.RememberMe);

当我调试asp.net mvc 4.0示例项目的LogOn方法的代码之后,以上的FormsAuth …方法调用。执行

User.Identity.IsAuthenticated

仍然返回FALSE。只有当我调试LogOff方法的时候

User.Identity.IsAuthenticated

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

更新:

这是关于FORMS身份验证!

我现在调试了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属性。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读