相关疑难解决方法(0)

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

我正在编写一个使用表单身份验证的Asp.net MVC 2应用程序,目前我的iPhone应用程序在通过Web进行身份验证/登录时遇到问题.我们开发了一个使用UIWebView控件的简单iPhone应用程序.在这个阶段,所有应用程序都会导航到我们的Asp.Net网站.简单吧?问题是,用户无法通过登录页面.重复步骤是:

  • 打开iPhone应用程序.
  • 该应用程序导航到主页.
  • 用户未经过身份验证,因此会重定向到登录屏幕/页面
  • 用户输入正确的用户名和密码.点击提交.
  • 在服务器端,用户经过身份验证,并生成cookie并使用FormsAuthentication.GetAuthCookie发送到客户端.
  • 服务器发送是重定向以将用户发送到正确的主页.

但是用户然后被重定向到BACK登录屏幕!

我已经对此进行了一些广泛的调试,我所知道的是:

cookie被发送到客户端,客户端正在存储cookie.在iPhone调试器中验证了这一点,并使用Javsascript在页面上显示cookie数据.cookie正被发送回服务器.在Visual Studio调试器中验证了这一点.它是正确的cookie(它与设置的相同).User.Identity.IsAuthenticated属性由于某种原因返回false,即使auth cookie包含在Request对象中.我已经确认iPhone应用程序已设置为接受cookie,并且它们在客户端上.

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

它在iPad上也具有相同的行为,因为它没有通过登录屏幕.这种模拟器和设备上的重复.

这个网站已经通过IE 7-8,Safari(适用于Windows),Blackberry,IEMobile 6.5,Phone 7进行了测试,可以找到它.唯一不适用的情况是iPhone应用程序中的UIWebView.

asp.net authentication cookies asp.net-mvc uiwebview

61
推荐指数
4
解决办法
2万
查看次数

为什么我的ASP.NET MVC持久身份验证cookie不起作用?

我正在使用ASP.NET MVC 3,使用表单身份验证(基于使用file-> new获得的修改后的vanilla帐户代码).

当您登录时,我正在设置一个身份验证cookie

FormsAuthentication.SetAuthCookie(userName, true);
Run Code Online (Sandbox Code Playgroud)

所以这应该设置一个持久的cookie.但是,如果我关闭浏览器并重新打开,当我浏览到该网站时,我被迫再次登录!我可以看到使用chrome dev工具创建cookie(.ASPXAUTH)并在关闭浏览器时不被删除,所以发生了什么?

我的web.config:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogIn" timeout="10000"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)

我正在IIS下本地测试这个,如果这有任何区别的话.

asp.net cookies asp.net-mvc forms-authentication

16
推荐指数
2
解决办法
2万
查看次数

当应用程序立即关闭时,Safari 不会在 iPhone 或 iPad (iOS) 上保存 Cookie

如果应用程序或选项卡在登录后立即关闭,一些 iPhone/iPad 设备就会丢失登录 cookie。

\n\n

我在研究中发现并不幸解决的问题:

\n\n
    \n
  1. Safari 可能默认禁用 cookie(Cookie 在 MAC -Safari 和 IOS Mobile- Safari 中不起作用

    \n\n
      \n
    • 已选中并启用 cookie
    • \n
  2. \n
  3. 有人提到 cookie 值中的逗号和分号在 Safari 上不起作用(Cookie 在 MAC -Safari 和 IOS Mobile- Safari 中不起作用)(Safari 和 Asp.net 中 cookie 的奇怪问题

    \n\n
      \n
    • 代码执行 FormsAuthentication.Encrypt() 将所有内容转换为大写字符
    • \n
  4. \n
\n\n
String hash = FormsAuthentication.Encrypt(ticket);\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 创建 FormsAuthenticationTicket 时关闭 FormsCookiePath,以防路径在 iOS 和 Android 上包含无效字符
  • \n
\n\n
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(\n  1,\n  user.MemberNumber.ToString(),\n …
Run Code Online (Sandbox Code Playgroud)

iphone safari mobile-safari ios

7
推荐指数
1
解决办法
4537
查看次数