OpenId ASP MVC Аутентификация с длительным сроком действия - PullRequest
2 голосов
/ 09 февраля 2010

Stackoverflow использует OpenId, как и многие другие веб-сайты. Однако мне редко нужно предоставлять свой OpenId для Stackoverflow, в то время как на других веб-сайтах с поддержкой OpenId я должен делать это один раз в день или неделю.

Это наводит меня на мысль, что срок действия сеанса истекает с веб-сайтом, а не с поставщиком OpenId.

Глядя на код DotNetOpenId в ASP MVC, я вижу, что после успешной аутентификации провайдером OpenId FormsAuthentication.SetAuthCookie вызывается с идентификатором и логическим параметром, чтобы определить, следует ли сохранять cookie.

Как заставить этот файл cookie истечь, скажем, в 2020 году, вместо значения по умолчанию.

Ответы [ 2 ]

4 голосов
/ 09 февраля 2010

С MSDN - Объяснено: Аутентификация с помощью форм в ASP.NET 2.0 :

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
    "userName",
    DateTime.Now,
    new DateTime(2020, 01, 01), // value of time out property
    false, // Value of IsPersistent property
    String.Empty,
    FormsAuthentication.FormsCookiePath);

string encryptedTicket = FormsAuthentication.Encrypt(ticket);

HttpCookie authCookie = new HttpCookie(
                        FormsAuthentication.FormsCookieName, 
                        encryptedTicket);

authCookie.Secure = true;

Response.Cookies.Add(authCookie);
1 голос
/ 09 февраля 2010

Вы можете использовать FormsAuthentication.RenewTicketIfOld() для обновления билета. Этот метод будет проверять, истек ли текущий билет, а если нет, продлить срок его действия. Вы можете вызывать этот метод при каждом запросе к вашему сайту, что будет «скользить» по истечении срока действия в будущем, поскольку пользователь продолжает использовать ваш сайт.

...