Asp.net mvc 核心方法是如何工作的?

Asp.net mvc 核心方法是如何工作的?,asp.net-mvc,authorize-attribute,Asp.net Mvc,Authorize Attribute,我的问题是核心方法是如何工作的 例如,当我想创建自定义Authorize属性时,我发现很多程序员都使用这段代码 var isAuthorized = base.AuthorizeCore(httpContext); if (!isAuthorized) { return false; } 然后他们编写自己的代码 那么,这段代码扮演的角色是什么呢?该方法是否只检查windows用户,如管理员和计算机管理中的其他已创建用户?如果我们自定义它以用于表单身份验证,该方法是否会进行检查

我的问题是核心方法是如何工作的

例如,当我想创建自定义Authorize属性时,我发现很多程序员都使用这段代码

var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
  {
    return false;
  }
然后他们编写自己的代码

那么,这段代码扮演的角色是什么呢?该方法是否只检查windows用户,如管理员和计算机管理中的其他已创建用户?如果我们自定义它以用于表单身份验证,该方法是否会进行检查

我也发现了这一点,但我不明白为什么开发人员将用户存储在cookie和会话中,而不是仅存储在会话中


在PHP中,我只将用户存储在会话中,并检查他是否存在于会话中。

它是开源的,代码可以在这里找到:

具体方法如下:

    // This method must be thread-safe since it is called by the thread-safe OnCacheAuthorization() method.
    protected virtual bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext == null)
        {
            throw new ArgumentNullException("httpContext");
        }

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

        if (_usersSplit.Length > 0 && !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase))
        {
            return false;
        }

        if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole))
        {
            return false;
        }

        return true;
    }

希望有帮助

谢谢,但我不明白的是,这段代码“user.Identity.IsAuthenticated”取决于哪个用户,它是否取决于在计算机管理中创建的用户?它是httpContext的用户(“使用浏览器/客户端的人”)也许更准确:User属性提供对IPrincipal接口的属性和方法的编程访问。