2015-11-06 5 views
1

В моем файле MVC Startup.Auth.cs, есть этот код:ASP.NET Идентичность, «Помни меня» и печенье таймаут

Provider = new CookieAuthenticationProvider 
       { 
        OnValidateIdentity = SecurityStampValidator 
         .OnValidateIdentity<ApplicationUserManager, ApplicationUser, int>(
          validateInterval: TimeSpan.FromMinutes(30), 
          regenerateIdentityCallback: (manager, user) => 
           user.GenerateUserIdentityAsync(manager), 
          getUserIdCallback: (id) => (id.GetUserId<int>())) 
       } 

Если я понимаю правильно, то Войти печенье истекает через 30 минут. Это означает, что пользователь будет вынужден войти в систему через 30 минут. Если это правильно, каково значение того, чтобы пользователь мог выбрать «Запомнить меня» на странице входа в систему, если срок действия файла cookie истекает через 30 минут?

ответ

0

Фрагмент кода, который вы показываете, не имеет ничего общего с «Remember Me». SecurityStampValidator действительно проверяет, сохраняется ли созданный файл cookie в отношении записи пользователя в базе данных. И validateInterval: TimeSpan.FromMinutes(30) определяет интервал, на котором часто проверяется файл cookie на базе базы данных.

Cookie, созданный Framework Identity, содержит данные, которых обычно достаточно для использования, без необходимости возвращаться к базе данных при каждом HTTP-запросе, поэтому для повышения производительности cookie не проверяется с БД при каждом запросе. Но вы можете аннулировать все файлы cookie пользователя, изменив SecurityStamp в базе данных. И это SecurityStampValidator проверяет это. Но если ничто не будет изменено в течение 30 минут после входа пользователя в систему, они не будут выходить из системы. Будет обновляться только значение cookie, но пользователь все равно будет зарегистрирован.

Надеюсь, теперь это станет более ясным.

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