Как исправить аутентификацию форм с помощью библиотеки обнаружения 51degrees?

У меня есть существующее приложение ASP.NET MVC, в котором используется настраиваемая проверка подлинности на основе форм, путем создания FormsAuthenticationTicket и записи файла cookie для проверки подлинности в соответствии с примером по адресу http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket%28v=vs.110%29.aspx.

Теперь, когда я добавляю ссылку на платформу обнаружения мобильных устройств 51degrees, я застреваю в цикле аутентификации, где context.Request.IsAuthenticated постоянно сообщает об ошибке.

Я проследил это до того факта, что context.Request.Browser.Cookies теперь также сообщает false, что объясняет, почему мой файл cookie аутентификации не имеет никакого эффекта. Но что заставило бы библиотеку думать, что мой настольный браузер (в данном случае Chrome, если это имеет какое-то значение) вдруг не поддерживает куки? Ошибка в библиотеке обнаружения? Неверная конфигурация или ошибка кода на моем конце? Что-то другое?

1 ответ

Я только что обновил до 51 градусов V3 с помощью nuget и столкнулся с той же проблемой.

Ты прав - context.Request.Browser.Cookies значение false, поэтому cookie-файл аутентификации не устанавливается и даже если он там есть, он не читается. Я попытался вручную установить его с помощью FormsAuthentication.GetAuthCookie() с последующим Response.Cookies.Add() и это все еще не сработало.

Я думаю, что это ошибка в библиотеке 51 градусов. Но у меня есть решение.

Согласно MSDN, FormsAuthentication.CookiesSupported опирается на FormsAuthentication.CookieMode свойство, которое опирается на <forms cookieless=""> приписывать.

По умолчанию, если <form>cookieless свойство не установлено, по умолчанию UseDeviceProfile, который 51 градусов сообщает false для проверки подлинности формы не будет смотреть или устанавливать cookie.

Ручная настройка <form cookieless="UseCookies"> сил FormsAuthentication.CookiesSupported чтобы быть правдой, поэтому файл cookie авторизации устанавливается и читается.

Я попробовал это, и аутентификация снова работает.

Источник: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.cookiessupported%28v=vs.110%29.aspx

- Редактировать--: <sessionState> Элемент system.web также имеет cookieless приписывать. Это установлено UseCookies по умолчанию, поэтому состояние сеанса с использованием cookie сеанса все еще работает. Источник: http://msdn.microsoft.com/en-us/library/h6bb9cz9%28v=vs.100%29.aspx

Другие вопросы по тегам