使用iPhone UIWebView时的Asp.Net表单身份验证

我正在编写一个使用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。


侃侃无极
浏览 481回答 3
3回答

尚方宝剑之说

我们发现的解决方案是创建一个文件(generic.browser),并包含此xml以告知Web服务器“ Mozilla”和“默认浏览器”设置均应支持cookie。<browser refID="Mozilla" >&nbsp; &nbsp; <capabilities>&nbsp; &nbsp; &nbsp; &nbsp; <capability name="cookies"&nbsp; value="true" />&nbsp; &nbsp; </capabilities></browser>
打开App,查看更多内容
随时随地看视频慕课网APP