2013-08-18 3 views
0

Я хочу знать, что является лучшим способом сохранить такие данные, как простой идентификатор для каждого пользователя, если я не буду использовать Session в приложениях ASP.Net и ASP.Net MVC?Хранить данные временных данных для каждого пользователя

+6

использование куки. – SLaks

+2

Существует также «localStorage» с HTML5. – Lloyd

+0

Спасибо за ваши ответы. Но есть еще один вопрос, я знаю, что это не место, чтобы спросить, но я стараюсь избегать OP. Каковы недостатки использования сеанса в приложениях MVC? – saber

ответ

4

Вы можете использовать файлы cookie или, если это всего лишь идентификатор пользователя, прошедшего проверку подлинности, куки-файл Forms Authentication, как представляется, предназначен для этой цели. Файл cookie для проверки подлинности форм может быть расширен и добавить некоторые другие пользовательские данные пользователя, которые могут потребоваться по каждому запросу (например, Имя и Фамилия пользователя). Это позволит избежать попадания в базу данных по каждому запросу. Вы можете использовать часть UserData в файле cookie для проверки подлинности форм.

4

Вы можете сохранить его в профиле пользователя, это можно расширить, наследуя от 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>