Каковы накладные расходы on PostAuthenticateRequest?

Я реализую настраиваемую систему заявок, используя метод Application_PostAuthenticateRequest в моем global.asax файл (ASP. NET MVC). Мне интересно, каковы накладные расходы для такого рода вещей - поскольку он десериализует некоторую информацию по каждому запросу. Он генерирует cookie размером около 1,8 КБ, что составляет тонну, но является ли это лучшей альтернативой, чем частые обращения к базе данных?

Десериализуемая информация

  • Идентификатор пользователя (int)
  • Роли (строка [])
  • Электронная почта (строка)
  • Связанные идентификаторы (int []) // (трудно описать, что это такое, но у каждого пользователя их будет около трех)

Казалось разумнее реализовать собственный FormsAuthenticationTicket , чем непрерывное обращение к базе данных и обратно на основе User.Identity.Name . Но меня беспокоит то, что эта постоянная десериализация очень тормозит. Но выглядит это примерно так ...

    protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
    {
        HttpCookie authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];

        if (authCookie != null)
        {
            string encTicket = authCookie.Value;

            if (!String.IsNullOrEmpty(encTicket))
            {
                // decrypt the ticket if possible.
                FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(encTicket);

                var userData = Deserializer.Deserialize(ticket);
                UserPrincipal principal = new UserPrincipal(userData);

                HttpContext.Current.User = principal;
            }
        }
    }

Вот класс, сериализуемый как UserData в FormsAuthenticationTicket .

[Serializable]
public class MembershipData
{
    public string Email
    {
        get;
        set;
    }

    public int Id
    {
        get;
        set;
    }

    public string[] Roles
    {
        get;
        set;
    }

    public int[] Ancillary
    {
        get;
        set;
    }
}
7
задан Ciel 9 February 2011 в 20:17
поделиться