Сессия пользователя в приложении ASP.Net MVC - PullRequest
1 голос
/ 01 июля 2010

В моем веб-приложении (asp.net mvc) у меня есть запретная зона. В моей модели у меня есть объект под названием «Пользователь», представляющий, что пользователь может выполнять вход / выход из системы в веб-приложении. Я использовал Forms Authentication для входа / выхода моих пользователей, и все работает нормально, но я хотел бы знать, есть ли способ сохранить сущность (пользователя, вошедшего в систему) во время сеанса пользователя?

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

Я использую NHibernate

Спасибо

Приветствия

1 Ответ

0 голосов
/ 01 июля 2010

Зависит.

Использование сеанса для входа в систему небезопасно, поскольку не является долговременным.Один Recycle и пуф, ваша сессия прошла.

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

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

        base.Initialize(requestContext);
    }

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

...