我有一个使用 .NET Framework 4.0 的 MVC 4 网站,并且已经部署了 Windows Server 2003 IIS,但我在 iPhone(尤其是 Chrome 浏览器)上遇到表单身份验证问题。
设想
- 我在 iPhone 上打开 Chrome 应用程序。
- 我访问我的网站并单击登录。我设法使用表单身份验证成功登录我的网站。
- 我让网站打开 5 分钟,什么也没做。
- 我回到我的 iPhone 并点击我网站上的链接。我已登出。
- 我尝试以与以前相同的方式登录。登录过程不起作用。没有错误,它只是将我带到我的主页(这是成功登录时应该做的)。
其他信息
- 一般来说,iPhone 上的 Safari 似乎不会遇到这个问题,除非......在 Chrome 中出现问题后,Safari 中似乎也出现了问题。
- 解决方案似乎是清除我所有的缓存/cookie 并在 20 分钟左右后再试一次。
- 我的超时实际上设置为 30 分钟,因此 Chrome 无论如何都不会遇到此问题。
我研究了这篇文章(使用 iPhone UIWebView 时的 Asp.Net Forms Authentication)并尝试了:-
(a) web.config 中的 UseCookies 设置
(b) .browser 配置文件
(c) web.config 中的 MachineKey
似乎没有什么不同,Chrome 登录似乎只停留一两分钟。
代码
创建表单身份验证 cookie 的代码如下...
FormsAuthentication.Initialize()
Dim fat As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, UserID, DateTime.Now, DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes), False, Roles, FormsAuthentication.FormsCookiePath)
Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(fat)))
关于如何解决此问题的任何建议?