2014-01-14 1 views
4

У меня есть приложение asp.net mvc4, в котором у меня есть этот класс:Использование переменной сессии в аутентификации в ASP.NET MVC 4 приложения

public class Internaute { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Login { get; set; } 
    public string Password { get; set; } 
} 

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

Session["user"] = myInternaute; 

И я использовал эти сведения, например, как это:

@{ 
    Internaute myInternaute = (Internaute)Session["user"]; 
    string login = myInternaute.Login; 
    string pwd = myInternaute.Password; 
} 

Я проверить Autorization пользователя к доступу по

Internaute myInternaute = (Internaute)Session["user"]; 
    if(myInternaute == null) return RedirectToAction("Index"); 

Так у меня есть следующие вопросы:

  1. это хороший способ продолжить по переменной сессии?
  2. Есть ли еще одна идея сделать это, потому что сессия была потеряна.
  3. Имеет ли эта идея некоторые преимущества?

Спасибо,

ответ

3

Это хороший способ продолжить по переменной сессии?

Да, ваш код выглядит хорошо, за исключением того, что вы должны проверять значение null, когда вы получаете значение из сеанса, чтобы убедиться, что оно не равно null. Кроме того, действительно ли вам нужен пароль, хранящийся в сеансе? Не рекомендуется хранить его как строку в сеансе.

Есть ли еще одна идея сделать это, потому что сессия была потеряна.

Если я правильно понял ваш вопрос, да, ваши данные сеанса будут потеряны во время сеанса. Если вы хотите, вы можете увеличить тайм-аут сеанса в файле web.config.

Имеет ли эта идея некоторые преимущества?

У вас будут базовые данные о пользователе, которые легко доступны в сеансе вместо запроса базы данных, но вы должны убедиться, что класс Internaute остается легким.

+0

Спасибо, простите, я не понимаю, что вы подразумеваете под этим предложением «убедитесь, что класс Internaute остается легким»? –

+1

Я имею в виду, не добавляйте к нему много свойств. Просто сохраняйте то, что вам нужно часто во всем приложении. Все остальные поля вы можете получить из БД при необходимости. –