Ответ 1
Ответ от @Hezye верен, но я подробнее расскажу об этом.
Вот код, который создает идентификатор для "rememberBrowser" CreateTwoFactorRememberBrowserIdentity
(https://aspnetidentity.codeplex.com/SourceControl/latest#src/Microsoft.AspNet.Identity.Owin/Extensions/AuthenticationManagerExtensions.cs строка 215):
public static ClaimsIdentity CreateTwoFactorRememberBrowserIdentity(this IAuthenticationManager manager,
string userId)
{
if (manager == null)
{
throw new ArgumentNullException("manager");
}
var rememberBrowserIdentity = new ClaimsIdentity(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
rememberBrowserIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userId));
return rememberBrowserIdentity;
}
Итак, это идентичность с типом "TwoFactorRememberBrowserCookie" и только с запросом на идентификатор пользователя.
Глядя на исходный код SignInManager
, который использует этот код: (https://aspnetidentity.codeplex.com/SourceControl/latest#src/Microsoft.AspNet.Identity.Owin/SignInManager.cs строка 106):
if (rememberBrowser)
{
var rememberBrowserIdentity = AuthenticationManager.CreateTwoFactorRememberBrowserIdentity(ConvertIdToString(user.Id));
AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, userIdentity, rememberBrowserIdentity);
}
Здесь IAuthenticationManager
используется для входа 2 идентификатора: один для фактического пользователя, другой для "rememberBrowser". И я считаю, что это приведет к созданию двух файлов cookie - одного файла cookie для проверки подлинности пользователя, а другой - для браузера.
В SignInManager
при использовании SignInOrTwoFactor
код (строка 218) проверяет, установлен ли идентификатор "RememberBrowser" в файлах cookie.
Файлы cookie OWIN защищены шифрованием, шифрование заимствовано из DpapiDataProtector
(документации). Я не специалист в криптографии, поэтому не могу прокомментировать силу криптографии. Я просто говорю, что cookie "rememberBrowser" зашифрован так же, как и основной файл cookie.
Что касается вашего упражнения, когда вы перезапустили свой IIS, машину и т.д. Удалили ли вы куки из браузера? Потому что, если вы этого не сделали, Identity (или скорее OWIN) будет рассматривать браузер как зарегистрированный, даже если исходная запись пользователя удаляется из базы данных. Хотя пользователь не будет входить в систему надолго, так как есть код в шаблоне MVC по умолчанию, который проверяет с базой данных для записи пользователя и выходит из системы, если пользовательская запись была изменена.
Что касается отключения "rememberBrowser" - всегда передайте false
этому аргументу. И второй файл cookie не будет установлен.