Поддерживать данные состояния сеанса так, чтобы они были привязаны к файлу аутентификации - PullRequest
0 голосов
/ 19 мая 2011

Я занимаюсь разработкой приложения ASP.NET MVC 3, которое по сути является прокси для базы данных. Для входа в систему пользователи должны указать свою базу данных пользователя и имя. (Я знаю, что не стоит использовать пользователей базы данных в качестве пользователей приложений, но я не проектировал базу данных, поэтому не вините меня.)

Когда мои пользователи входят в систему, я хотел бы сохранить в переменной сеанса их имя пользователя и пароль:

Session["UserID"] = TheConnectionStringBuilder.UserID;
Session["Password"] = TheConnectionStringBuilder.Password;

Однако состояние сеанса неразрывно связано с файлом cookie аутентификации, и это может вызвать проблемы позже. Есть ли способ сохранить данные о состоянии сеанса таким образом, чтобы они оставались привязанными к куки-файлу аутентификации?

1 Ответ

1 голос
/ 19 мая 2011

Одним из способов может быть сопоставление времени ожидания состояния сеанса с временем ожидания аутентификации с использованием конфигурации. Например,

<authentication mode="Forms">
 <forms timeout="30" />
</authentication>

<sessionState timeout="31" />

Еще одним способом было бы сохранить учетные данные в каком-либо постоянном хранилище (например, файле), помеченном каким-либо сгенерированным ключом, и затем сохранить этот ключ в файле cookie аутентификации. Тем не менее, я чувствую, что это обходной путь, и я предпочел бы использовать сессионный подход.

По какой-то причине, если вы не нашли идентификатор пользователя / пароль в сеансе (например, перезапуск пула приложений), вы можете заставить пользователя повторно войти в систему (используя FormsAuthentication.SignOut затем RedirectToLoginPage ).

...