Я хочу знать, что является лучшим способом сохранить такие данные, как простой идентификатор для каждого пользователя, если я не буду использовать Session
в приложениях ASP.Net и ASP.Net MVC?Хранить данные временных данных для каждого пользователя
ответ
Вы можете использовать файлы cookie или, если это всего лишь идентификатор пользователя, прошедшего проверку подлинности, куки-файл Forms Authentication
, как представляется, предназначен для этой цели. Файл cookie для проверки подлинности форм может быть расширен и добавить некоторые другие пользовательские данные пользователя, которые могут потребоваться по каждому запросу (например, Имя и Фамилия пользователя). Это позволит избежать попадания в базу данных по каждому запросу. Вы можете использовать часть UserData в файле cookie для проверки подлинности форм.
Вы можете сохранить его в профиле пользователя, это можно расширить, наследуя от ProfileBase, и вы можете реализовать свои собственные свойства.
Например:
public class ProfileManager : ProfileBase
{
public ProfileManager() : base()
{
}
[SettingsAllowAnonymous(false)]
[ProfileProvider("AspNetSqlProfileProvider")]
public string DisplayName {
get
{
return base["DisplayName"].ToString();
}
set
{
base["DisplayName"] = value;
this.Save();
}
}
}
В вашей конфигурации, вам необходимо указать приложение какого типа профиля имеет:
<profile inherits="ProfileNamespace.ProfileManager" defaultProvider="AspNetSqlProfileProvider" enabled="true">
<providers>
<clear />
<add name="AspNetSqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</profile>
использование куки. – SLaks
Существует также «localStorage» с HTML5. – Lloyd
Спасибо за ваши ответы. Но есть еще один вопрос, я знаю, что это не место, чтобы спросить, но я стараюсь избегать OP. Каковы недостатки использования сеанса в приложениях MVC? – saber