Стоит ли хранить пользовательские данные в сеансе или использовать провайдер пользовательских профилей? - PullRequest
1 голос
/ 23 марта 2012

На моем сайте, когда пользователь входит в систему, я создаю объект сеанса со следующими свойствами

DisplayName,
Email,
MemberId

Вопросы

  1. Имеет ли смысл использовать провайдера пользовательских профилей для удержания пользователя? данные?
  2. Каковы плюсы и минусы каждого подхода (поставщик сеансов и пользовательских профилей)?
  3. Имеет ли смысл использовать пользовательский поставщик данных только для чтения, которые может прийти из одной или нескольких таблиц?

1 Ответ

2 голосов
/ 23 марта 2012

Мой ответ не прямой подход к вашему вопросу.Это просто альтернативный подход.

Вместо провайдера настраиваемого профиля я создаю настраиваемый контекст, чтобы отслеживать текущий профиль пользователя, вошедшего в систему.Вот пример кода.Вы можете хранить DisplayName, Email, MemberId вместо класса MyUser.

void Application_AuthenticateRequest(object sender, EventArgs e)
{
    if (HttpContext.Current.User != null && 
        HttpContext.Current.User.Identity.IsAuthenticated)
    {
        MyContext.Current.MyUser = YOURCODE.GetUserByUsername(HttpContext.Current.User.Identity.Name);
    }
}

public class MyContext
{
    private MyUser _myUser;

    public static MyContext Current
    {
        get
        {
            if (HttpContext.Current.Items["MyContext"] == null)
            {
                MyContext context = new MyContext();
                HttpContext.Current.Items.Add("MyContext", context);
                return context;
            }
            return (MyContext) HttpContext.Current.Items["MyContext"];
        }
        }

        public MyUser MyUser
        {

            get { return _myUser; }
            set { _myUser = value; }
        }
    }
}
...