Аутентификация форм Asp.Net при использовании iPhone UIWebView

Я пишу Asp. net приложение MVC 2, которое использует проверку подлинности с помощью форм, и в настоящее время у меня возникла проблема с нашим приложением для iPhone в отношении проверки подлинности / входа в систему через Интернет. Мы разработали простое приложение для iPhone, в котором используется элемент управления UIWebView. На этом этапе все, что делает приложение, - это переходит на наш сайт Asp.Net. Все просто, правда? Проблема в том, что пользователь не может пройти через страницу входа. Шаги воспроизведения:

  • Откройте приложение iPhone.
  • Приложение переходит на домашнюю страницу.
  • пользователь не аутентифицирован, поэтому он перенаправляется на экран / страницу входа в систему.
  • Пользователь вводит правильный имя пользователя и пароль. нажимает кнопку «Отправить».
  • на стороне сервера пользователь проходит проверку подлинности, создается файл cookie и отправляется клиенту с помощью FormsAuthentication.GetAuthCookie.
  • Отправленные сервером данные перенаправляются для отправки пользователя на правильную домашнюю страницу.

Но затем пользователь перенаправляется НАЗАД на экран входа в систему!

Я проделал обширную отладку и знаю одно:

Файл cookie отправляется на клиент, а клиент хранит файл cookie. Проверено в отладчике iPhone, а также с помощью Javsascript для отображения данных cookie на странице. Файл cookie отправляется обратно на сервер. Проверено в отладчике Visual Studio. Это правильный файл cookie (тот самый, который был установлен). Свойство User.Identity.IsAuthenticated по какой-то причине возвращает false, даже если файл cookie аутентификации содержится в объекте Request. Я убедился, что приложение iPhone настроено на прием файлов cookie, и они находятся на клиенте.

Вот забавный факт: он отлично работает, если вы откроете браузер Safari на iPhone и перейдете на наш сайт напрямую.

То же самое и на iPad - не выходит за пределы экрана входа. Эти репродукции на эмуляторах и на устройствах.

Этот же веб-сайт был протестирован с IE 7-8, Safari (для Windows), Blackberry, IEMobile 6.5, Phone 7, и он работает. Единственное обстоятельство, при котором он не работает, - это UIWebView в приложении для iPhone.

61
задан jrummell 25 March 2013 в 13:52
поделиться