首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用iPhone UIWebView时的Asp.Net Forms身份验证?

如何使用iPhone UIWebView时的Asp.Net Forms身份验证?
EN

Stack Overflow用户
提问于 2018-03-19 00:06:51
回答 2查看 0关注 0票数 0

我正在编写一个使用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相同)。User.Identity.IsAuthenticated属性由于某种原因返回false,即使auth cookie包含在Request对象中。我已验证iPhone应用程序已设置为接受Cookie,并且它们位于客户端上。

以下是有趣的事情:如果在iPhone上打开Safari浏览器并直接访问我们的网站,它可以正常工作。

它在iPad上也有相同的行为,因为它不会超过登录屏幕。这个仿真器和设备上的repros。

这个网站已经过IE 7-8,Safari(Windows),Blackberry,IEMobile 6.5,Phone 7的测试,并且可以找到。它无法运行的唯一情况是iPhone应用程序中的UIWebView。

EN

回答 2

Stack Overflow用户

发布于 2018-03-19 09:01:56

我有完全相同的问题,但与另一台设备(NokiaN8),并将问题追溯到用户代理。

IIS使用正则表达式来匹配User-Agent字符串。问题的根源在于它没有针对特定设备的任何匹配的正则表达式,并最终以使用默认属性的最低匹配级别之一结束。默认属性表示浏览器不支持cookies。

解:

  1. 在名为web的项目中添加一个文件夹App_Browsers(右键单击项目,选择:)Add > Add ASP.NET Folder > App_Browsers
  2. 在该文件夹中添加一个文件(右键单击,选择:)Add > New Item。该文件可以有任何名称,但必须有.browser结尾。
  3. 添加一个好的匹配表达式和正确的功能(或添加更改Default)。

两个例子:

代码语言:txt
复制
<browsers>
  <browser id="NokiaN8" parentID="Mozilla">
    <identification>
      <userAgent match="NokiaN8" />
    </identification>
    <capabilities>
      <capability name="browser" value="NokiaN8" />
      <capability name="cookies" value="true" /> 
    </capabilities> 
  </browser> 
</browsers>

或更改默认值:

代码语言:txt
复制
<browsers>
  <browser refID="Default"> 
    <capabilities> 
      <capability name="cookies" value="true" /> 
    </capabilities>
  </browser>
</browsers>

更多信息:浏览器定义文件模式

票数 0
EN

Stack Overflow用户

发布于 2018-03-19 09:11:39

我们找到的解决方案是创建一个文件(generic.browser)并包含此xml以告诉Web服务器“Mozilla”和默认浏览器设置都应该支持cookie。

代码语言:txt
复制
<browser refID="Mozilla" >
    <capabilities>
        <capability name="cookies"  value="true" />
    </capabilities>
</browser>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档