2016-08-24 2 views
2

У меня есть страница входа с опцией помнить меня. Я хочу настроить помнить, что срок действия cookie истекает достаточно долго, скажем, один месяц.Как настроить различные ExpireTimeSpan для постоянных и непостоянных файлов cookie в ASP. Net Identity Core

Я мог бы использовать свойство CookieAuthenticationOptions.ExpireTimeSpan, но это не работает «только» для опции RememberMe.

Я хочу, чтобы пользователь входил в течение нескольких минут, например, через 30 минут после входа в систему, в текущем сеансе просмотра (если пользователь не выбрал параметр RememberMe). В этом случае я бы использовал ExpireTimeSpan = TimeSpan.FromMinutes(30).

Есть ли способ настроить что-то вроде «RememberMeDuration» для настройки двух разных параметров при выборе RememberMe и когда он не выбран? - из коробки (по крайней мере, не создавая всего нового промежуточного программного обеспечения для такой небольшой функции)

ответ

4

Абсолютный срок действия может использоваться для реализации функции «Запомнить меня» (скажем, 30 дней). При использовании Identity установите ExpiresUtc во время SignInAsync после проверки пароля.

var au = new ApplicationUser() { Email = model.Email }; 
var r1 = await _userManager.CheckPasswordAsync(au, model.Password); 
if (r1) 
{ 
    await _signInManager.SignInAsync(au, new AuthenticationProperties() { ExpiresUtc = DateTime.UtcNow.AddDays(30) }); 
} 

Если Cookie Middleware без идентичности используется затем установите ExpiresUtc после заказной проверки пароля успешно.

Из документов:

await HttpContext.Authentication.SignInAsync(
    "MyCookieMiddlewareInstance", 
    principal, 
    new AuthenticationProperties 
    { 
     ExpiresUtc = DateTime.UtcNow.AddDays(30) 
    }); 

IsPersistent и ExpiresUtc являются взаимоисключающими

+0

Привет bvoleti. Спасибо за обходной путь, используя CheckPasswordAsync, а затем SignInAsync. Однако, если я использую ExpiresUtc, я потеряю IsPersistent и с этим эффектом, скользящее окончание не будет работать. Это был бы мой последний выбор, поскольку я хочу попробовать что-то, что позволит мне сохранить на своем месте все еще действующее скользящее окончание. –