Использование DotNetOpenAuth 3 в ASP.NET MVC и реализация средства RememberMe ...
Я обнаружил, что даже если я установил для createPersistentCookie значение true в FormsAuthentication.RedirectFromLoginPage и FormsAuthentication.SetAuthCookie, пользователь не запоминается после истечения времени сеанса ASP.NET .
Если я проверю файл cookie, то обнаружу, что он помечен как постоянный и в будущем срок его действия истекает, я полагаю, потому что я установил время ожидания FORMS для web.config на несколько лет. В любом случае, если пользователь закрывает браузер и снова открывает его, он запоминается правильно - до тех пор, пока время сеанса ASP не истекло.
Более старый пост Скотта Хансельмана заставляет меня задуматься, не потому ли это, что FormsAuthentication пытается обновить билет аутентификации и, возможно, в модели OpenId, которая не работает, но я установил FORMS SlidingExpiration = "false" в web.config и в любом случае я подумал, что принудительное использование постоянных cookie сделает эти вещи неактуальными.
Мне также интересно, почему в примере DotNetOpenId MVC нет флажка RememberMe - может быть, в этом есть что-то хитрое?
С другой стороны, здесь, в StackOverflow, я вижу, что меня автоматически запоминают через сеансы. Интересно, использовали ли они что-то кроме DotNetOpenId для аутентификации OpenId.
Кто-нибудь еще успешно выполнял RememberMe с DotNetOpenId в ASP.NET MVC? Какие-нибудь хитрости?
[Update]
Спасибо за попытку помочь, Эндрю. Оказывается, речь шла не о DotNetOpenId.
После прочтения этого я понял, что мой хостинг-провайдер, вероятно, регулярно перерабатывает пул приложений, и это приводит к тому, что шифрование билета аутентификации выполняется с помощью нового ключа компьютера.
Согласно предыдущей связанной статье я добавил следующее в System.Web в моем Web.Config, и это решило проблему:
<machineKey
validationKey="(generated a new key to place here)"
decryptionKey="(generated a new key to place here)"
validation="SHA1"
decryption="AES" />