我正在编写一个使用表单身份验证的ASP.NETMVC2应用程序,目前我的iPhone应用程序在Web身份验证/登录方面遇到了问题.我们已经开发了一个使用UIWebView控件的简单iPhone应用程序.在这个阶段,应用程序所做的一切就是导航到我们的ASP.NET网站.很简单,对吧?问题是,用户无法通过登录页面.再现步骤包括:
- 打开iPhone应用程序.
- 应用程序会导航到主页.
- 用户没有经过身份验证,因此他们被重定向到登录屏幕/页面
- 用户输入正确的用户名和密码.单击提交.
- 在服务器端,使用FormsAuthentication.GetAuthCookie对用户进行身份验证,并生成cookie并将其发送到客户端.
- 服务器发送被重定向,以将用户发送到正确的主页.
但是用户随后被重定向回登录屏幕!
我对此做了一些广泛的调试,我所知道的是:
cookie被发送到客户端,客户端正在存储cookie.在iPhone调试器中验证了这一点,并使用JavsScript在页面上显示cookie数据.cookie正在被发送回服务器.在Visual Studio调试器中验证了这一点.这是正确的cookie(与设置的cookie相同).属性用户.身份IsAuthenticated出于某种原因返回false,即使请求对象中包含auth cookie.我已经验证了iPhone应用程序已设置为接受cookie,并且它们位于客户端.
有趣的是:如果你在iPhone上打开Safari浏览器,直接转到我们的网站,它就可以很好地工作.
它在iPad上也有同样的行为,因为它没有通过登录屏幕.这在仿真器和设备上都是错误的.
这个网站已经在IE7-8,Safari(Windows版),Blackberry,IEMobile 6.5,Phone 7上进行了测试,并且可以正常工作.唯一不起作用的情况是iPhone应用程序中的UIWebView.