2015-10-16 2 views
0

Привет, ребята, нужна помощь здесьКак хранить значение для использования в любом месте MVC на протяжении всего сеанса?

Я хочу сохранить несколько значений в моем проекте MVC через сеанс, такой как UserId, EmailId, RoleId и другие.

сейчас я создаю переменную сеанса для этой цели и сохраняю все эти значения в переменной сеанса, есть ли другой способ сохранить значение на протяжении всего сеанса, поскольку я прочитал с использованием переменной сеанса, не является безопасным, а viewdata, tempdata , временно хранить данные хранилища данных

+0

Почему это не безопасно? Применяется ли оно к вашему приложению/конфигурации? –

+1

Я не думаю, что ваш вопрос соответствует требованиям 'SO' для« хорошего »вопроса. Он слишком широк и основан на мнениях. Лучше сосредоточьте свой вопрос на «Как это сделать», а не «Что делать». Но вернемся к вашему вопросу - вам нужно прочитать об управлении безопасностью в «ASP.NET», действительно есть множество способов сохранить важные данные, такие как чтение из базы данных или то, что, по моему мнению, наиболее популярно сейчас, - использование токена идентификации. Но еще раз, пока вы просите немного слишком много, поэтому я не думаю, что любой может дать вам точный ответ. – Leron

+0

Шифрование данных в сеансе –

ответ

0

Вы можете создать пользовательский объект и сохранить его в HttpContext.

В global.asax, сцепите событие OnSessionStart

void OnSessionStart(...) 
{ 
    HttpContext.Current.Session.Add("__CustomUserData", new UserDataObject()); 
} 

из любого места в коде, где свойство HttpContext.Current! = NULL вы можете retrive этого объекта. Создано расширение в моих проектах

public static UserDataObject GetCustomUserDataObject(this HttpContext current) 
{ 
    return current != null ? (UserDataObject)current.Session["__CustomUserData"] : null; 
} 

В контроллере или менеджера вы можете получить к нему доступ следующим образом затем:

var userData = HttpContext.Current.GetCustomUserDataObject(); 

Замечание:

Однако для USERID по умолчанию и имя пользователя, я хотел бы предложить используйте систему идентификации Mvc (http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity)

+0

1. «Как мы должны установить значение изначально - чтобы мы могли получить его из GetCustomUserDataObject?» 2. «Следует ли установить сеанс [__ CustomUserData»]? 3. 'Если так, то это все еще использует сессию?? – jAntoni

+0

Как мое требование - сохранить выбранные« Клиент »и« Устройство »и иметь их значения во всем веб-приложении, так как все данные, обрабатываемые на разных страницах, будут тесно связаны с выбранный клиент и устройство – jAntoni

Смежные вопросы