ЗапомнитьMe с DotNetOpenId в ASP.NET MVC

Использование 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? Любые трюки?

[Обновление]

Спасибо за помощь, Андрей. Оказывается, это не о 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" />

Ответы

Ответ 1

Я все еще думаю, что имя файла cookie должно совпадать... но здесь что-то еще.

Звучит так, как вы говорите, если ваш тайм-аут в файле web.config велик, тогда все работает. Но после того, как вы его укоротите, ваш постоянный файл cookie не превзойдет значение тайм-аута. Эта тема форума помогла мне ответить на это: http://forums.asp.net/p/1010241/1347970.aspx#1347970

Кажется, что тайм-аут в web.config влияет на все файлы cookie. В нем говорится, как долго длится аутентификационный билет. Все файлы cookie auth имеют такое время ожидания, независимо от того, являются ли они "постоянными" или нет. Таким образом, разница между постоянными куки файлами и непостоянными куками заключается в том, что первый будет длиться в разных сеансах браузера, а последний умрет (раньше), если браузер закрыт.

Это имеет смысл?

Ответ 2

Соответствует ли имя файла cookie в вашем файле web.config и вызове вашего контроллера в FormsAuthentication.SetAuthCookie? Это может быть ошибкой в ​​примере DNOI, но я подозреваю, что у вас есть имя файла cookie в файле web.config(как это делает образец DNOI), тогда вам, вероятно, придется указывать имя файла cookie в качестве третьего параметра SetAuthCookie или RedirectFromLoginPage, В противном случае, формы auth не распознают постоянный файл cookie, который вы установили в качестве файла cookie для входа.