Подтвердить что ты не робот

Как работает метод AuthorizeCore?

Мой вопрос в том, как работает метод AuthorizeCore?

Например, когда я хотел создать собственный атрибут Authorize, я обнаружил, что многие программисты используют этот код

var isAuthorized = base.AuthorizeCore(httpContext);
if (!isAuthorized)
  {
    return false;
  }

а затем они пишут собственный код.

Итак, какова роль, которую играет эта часть кода, и проверяет ли этот метод только для пользователей Windows, таких как администратор и другие созданные пользователи, в управлении компьютером, если мы настроим его для использования в аутентификации формы.

Также я нашел этот код, но я не понимаю, почему разработчик сохранил пользователя в cookie и сеансе вместо сеанса.

В PHP я использовал для хранения пользователя только в сеансе и проверял, существует ли он в сеансе или нет.

4b9b3361

Ответ 1

Это с открытым исходным кодом, код можно найти здесь:

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Mvc/AuthorizeAttribute.cs

И вот конкретный метод:

    // 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;
    }

Надеюсь, что это поможет.