我正在编写一个使用Forms Authentication的Asp.net MVC 2应用程序,目前我的iPhone应用程序在通过Web进行身份验证/登录时遇到问题。我们已经开发了一个使用UIWebView控件的简单iPhone应用程序。在此阶段,所有应用程序要做的就是导航到我们的Asp.Net网站。简单吧?问题是,用户无法通过登录页面。复制步骤为:
打开iPhone应用程序。
该应用程序导航到主页。
用户未通过身份验证,因此将他们重定向到登录屏幕/页面
用户输入正确的用户名和密码。点击提交。
在服务器端,使用FormsAuthentication.GetAuthCookie对用户进行身份验证并生成cookie并将其发送给客户端。
服务器发送被重定向以将用户发送到正确的主页。
但用户然后被重定向返回到登录界面!
我已经对此进行了一些广泛的调试,我知道的是:
cookie正在发送到客户端,并且客户端正在存储cookie。在iPhone调试器中以及通过使用Javsascript在页面上显示cookie数据进行了验证。cookie被发送回服务器。在Visual Studio调试器中对此进行了验证。它是正确的cookie(与设置的cookie相同)。尽管auth cookie包含在Request对象中,由于某种原因,属性User.Identity.IsAuthenticated仍返回false。我已验证iPhone应用程序已设置为接受Cookie,并且它们在客户端上。
这是一件有趣的事情:如果您在iPhone上打开Safari浏览器并直接转到我们的网站,它会很好地工作。
它在iPad上也具有相同的行为,因为它不会超出登录屏幕。在仿真器和设备上都如此。
该网站已经通过IE 7-8,Safari(适用于Windows),Blackberry,IEMobile 6.5,Phone 7进行了测试,并且可以正常运行。唯一无法使用的情况是iPhone应用程序中的UIWebView。
尚方宝剑之说