Я пишу приложение Asp.net MVC 2, которое использует проверку подлинности с помощью форм, и в настоящее время у меня проблема с нашим приложением iPhone в отношении аутентификации/входа в сеть. Мы разработали простое приложение для iPhone, которое использует элемент управления UIWebView. На этом этапе все приложение - это переход на наш сайт Asp.Net. Простой, не так ли? Проблема в том, что пользователь не может пройти страницу входа. Этапы воспроизведения:
- Откройте приложение для iPhone.
- Приложение переходит на домашнюю страницу.
- пользователь не аутентифицирован, поэтому он перенаправляется на экран входа/страницу
- Пользователь вводит правильное имя пользователя и пароль. клики submit.
- на стороне сервера, пользователь аутентифицируется и cookie генерируется и отправляется клиенту с использованием FormsAuthentication.GetAuthCookie.
- Сервер отправляет перенаправление, чтобы отправить пользователя на правильную домашнюю страницу.
Но затем пользователь перенаправляется НАЗАД на экран входа в систему!
Я сделал довольно обширную отладку по этому поводу, и я знаю:
cookie отправляется клиенту, а клиент хранит файл cookie. Проверено это в отладчике iPhone, а также с помощью Javsascript для отображения данных cookie на странице. Куки файлы отправляются обратно на сервер. Проверено это в отладчике Visual Studio. Это правильный файл cookie (это тот, который был установлен). Свойство User.Identity.IsAuthenticated по какой-то причине возвращает false, хотя файл cookie auth содержится в объекте Request. Я подтвердил, что приложение iPhone настроено на прием файлов cookie, и они находятся на клиенте.
Вот забавная вещь: она отлично работает, если вы открываете браузер Safari на iPhone и отправляетесь на наш сайт напрямую.
У него такое же поведение и на iPad, что он не проходит мимо экрана входа в систему. Это воспроизводится на эмуляторах и на устройствах.
Этот же веб-сайт был протестирован с IE 7-8, Safari (для Windows), Blackberry, IEMobile 6.5, Phone 7 и работает. Единственное обстоятельство, что он не работает, - это UIWebView в приложении iPhone.