1

В моем веб-приложении (asp.net mvc) У меня есть область ограничения. В моей модели у меня есть объект под названием «Пользователь», который означает, что пользователь может выполнить вход/выход в веб-приложение. Я использовал аутентификацию форм для входа/выхода из моих пользователей, и все работает нормально, но я хотел бы знать, есть ли способ сохранить сущность (зарегистрированного пользователя) во время сеанса пользователя?Сессия пользователя в ASP.Net MVC App

Есть ли какая-нибудь лучшая пратица для этого? Сделайте тайм-аут автоматической установки формы совместимой с HttpSession или есть ли другие способы сделать это?

Я использую NHibernate

Благодаря

Приветствия

ответ

0

Зависит.

Опора на сеанс для зарегистрированного статуса небезопасна, потому что она не долговечна. Один Recycle и poof, ваша сессия ушла.

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

protected override void Initialize(System.Web.Routing.RequestContext requestContext) 
    { 
     if(Session["MyIdentityDTOKey"] == null) 
      GoThrowThingsInTheSession(); 

     base.Initialize(requestContext); 
    } 

Тайм-аут не должен иметь значения, поскольку, если они не могут войти в приложение, они все равно не могут видеть свою сессию. Но если вы настаиваете, вы всегда можете использовать метод Session.Timeout, чтобы он истек в одно и то же время.

+0

интересно, я использую сеанс аналогичным образом, кроме как инициализировать переменные сеанса в global.asax 'Session_Start'. Разве это не лучшее место? – dotjoe

+0

Прохладный, я попробую! Метод инициализации должен быть в контроллере? Или мой базовый класс контроллера? благодаря –

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