Каков рекомендуемый метод хранения постоянных переменных для конкретного пользователя в ASP.NET при использовании настраиваемого поставщика членства? - PullRequest
3 голосов
/ 10 марта 2011

У меня есть приложение ASP.NET, в котором используется пользовательский MembershipProvider, позволяющий пользователям входить в систему и получать доступ к определенным функциям. MembershipProvider использует встроенную проверку подлинности форм ASP.NET для установки файлов cookie и отслеживания того, кем является пользователь.

Теперь, когда я вошел в систему, каков наилучший способ хранения информации о пользователе для их сеанса? В прошлом я только использовал переменные Session, т.е. Session["ReputationLevel"] = "4230"; (мое приложение фактически не имеет переменной уровня репутации, это всего лишь пример). Это все еще лучший способ при использовании MembershipProvider? Было бы лучше как-то встроить эту информацию в самого провайдера или в собственную реализацию MembershipUser? Если я сохраню все в сеансе, я полагаю, что мне придется отказаться от сеанса, когда MembershipProvider указывает, что пользователь вышел из системы ...?

Извините, если этот вопрос неопределенный. Последние несколько лет я занимался в основном разработкой ColdFusion, и я все еще немного новичок в некоторых из этих технологий ASP.NET. Я думал, что функция MembershipProvider позаботится обо всем, что мне нужно, но теперь я вижу, что в моей реализации все еще есть некоторые дыры (в данном случае, где хранить дополнительные данные).

Этот вопрос похож на , но не совсем то, что я спрашиваю.

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

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

  • Вы можете свернуть свой собственный, вручную сохраняя и читая данные из таблицы SQL по мере необходимости - возможно, используя кэш времени выполнения, чтобы избежать попадания в базу данных при каждомrequest.
  • Вы можете расширить MemberShipUser в своем пользовательском провайдере членства и добавить к нему свойства. Вот пошаговое руководство ...
  • Вы можете использовать профили ASP.NET, которые могут быть самым простым способом и поддерживают хранение данных для уникальных неаутентифицированных пользователей. Вот пошаговое руководство для профилей, хотя есть еще несколько.
1 голос
/ 10 марта 2011

Я не уверен, как вы это сделаете, но я полагаю, вы могли бы продлить членство в членстве для этого.Но лично я обнаружил, что обычные сессии работают просто отлично.Единственное, что я хотел бы сделать, - это обернуть их функциональность в набор общих функций.Итак, ваш пример будет:

static string GetUserReputation()
{
   return Session["Reputation"].ToString();
}

и просто позвоните GetUserReputation

...