2016-09-13 2 views
2

Я использую asp.net core 1.0, и у меня есть ASP Identity. Я хочу использовать файлы cookie для установки срока действия файла cookie, так что, когда страница простаивает в течение 20 минут, она перенаправляется на страницу входа в систему. В настоящее время это не так. Моя установка:Окончание срока действия файла cookie не перенаправляется на страницу входа

app.UseIdentity(); 

добавить идентичность как:

services.AddIdentity<CRAMSUser, IdentityRole>(config => 
     { 
      config.User.RequireUniqueEmail = true; 
      config.Password.RequiredLength = 8; 
      config.Cookies.ApplicationCookie.LoginPath = "/Auth/Login"; 
      config.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents() 
      { 
       OnRedirectToLogin = ctx => 
       { 
        if (ctx.Request.Path.StartsWithSegments("/api") && 
        ctx.Response.StatusCode == (int)HttpStatusCode.OK) 
        { 
         ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized; 
        } 
        else 
        { 
         ctx.Response.Redirect(ctx.RedirectUri); 
        } 
        return Task.FromResult(0); 
       } 
      }; 
     }) 
      .AddEntityFrameworkStores<CRAMSContext>() 
      .AddDefaultTokenProviders(); 

Как настроить его так, что он будет перенаправлять на страницу входа, сидя простаивает как час?

+0

Отправляете ли вы по волшебству, если пользователь ничего не делает или не отправляется новый запрос? – blowdart

+0

@ blowdart, да по волшебству или обнаружение тайм-аута сеанса, или он может быть настроен на 15 минут бездействия. Например, я буду сидеть на странице в режиме ожидания более 20 + минут, и аутентификация будет выходить из системы, но страница останется на той же странице. Тогда в моей консоли, это будет ошибка и сказать, несанкционированный. Вместо того, чтобы оставаться на одной странице, я бы предпочел, чтобы он обновился и перешел прямо на страницу, в которой говорится, что «сеанс отключен, пожалуйста, войдите в систему». – epv

+0

По магии не получится. У вас должен быть какой-то javascript-опрос URL-адреса, который, когда истекает срок действия файла cookie, возвращает 403, который вы обнаруживаете, а затем вы можете перенаправить в javascript. – blowdart

ответ

2

Использование Раздвижные Истечение: см docs

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
{ 
    SlidingExpiration = true, 
    ExpireTimeSpan = TimeSpan.FromMinutes(60) 
}); 

Раздвижные Истечение на печенье работает следующим образом: На аутентификации, абсолютное время истечения установлено (т.е. в настоящее время + 60мин). При последующих запросах время истечения срока действия должно быть сброшено до нового Now + 60min, но это обновление не выполняется для каждого запроса, поскольку это будет пустой тратой пропускной способности. Таким образом, только после того, как X% этого скользящего истечения прошло, cookie обновляется с новой датой истечения срока действия. Согласно документам, на ASP.NET X составляет 50% от ExpirationTimeSpan (30 минут).

+0

Увеличивает ли это только время ожидания до 60 минут? – epv

+0

Он устанавливает тайм-аут печенья на 60 минут. Если пользователь выполнит другой запрос более чем через 30 минут, он обновит файл cookie и тайм-аут. –

+0

Отлично, я оставлю испытание на ночь, чтобы узнать, что происходит в AM. – epv

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