Стоит ли хранить пользовательские данные в сеансе или использовать провайдера пользовательских профилей?
На моем сайте, когда пользователь входит в систему, я создаю объект сеанса со следующими свойствами
DisplayName,
Email,
MemberId
Вопросы
- Имеет ли смысл использовать поставщика пользовательских профилей для хранения пользовательских данных?
- Каковы плюсы и минусы каждого подхода (поставщик сеансов и пользовательских профилей)?
- Имеет ли смысл использовать пользовательский поставщик данных только для чтения, которые могут поступать из одной или нескольких таблиц?
1 ответ
Решение
Мой ответ не прямой подход к вашему вопросу. Это просто альтернативный подход.
Вместо настраиваемого поставщика профилей я создаю настраиваемый контекст, чтобы отслеживать профиль текущего вошедшего в систему пользователя. Вот пример кода. Вы можете хранить 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; }
}
}
}