c# - FormsAuthentication 适用于除 IE 之外的所有浏览器

标签 c# asp.net internet-explorer forms-authentication

这当然是一个奇怪的...

我有一个 ASP.net 4.0、C# 网站,它有一个使用 FormsAuthentication 处理用户访问的登录页面。整个站点中还有一些代码可以在 session 超时或其他需要用户重新登录的情况下将用户引导回登录页面。这些都是我以前做过十几次的非常基本的东西。

我知道整个过程都有效,因为我已经能够在我尝试过的每个浏览器上登录到通过 VS2010 运行的站点。当它位于使用 Chrome、Firefox、Safari (Mac) 和两个手机浏览器的开发服务器上时,它也能正常工作。我遇到的唯一问题是 Internet Explorer。

现在,考虑到它在本地 IE 中工作但在服务器上不工作,这个有点难以调试。它也适用于服务器上的其他浏览器这一事实也排除了服务器配置问题。

我为找出可能出错的地方所做的是将查询字符串添加到我的 FormsAuthentication.RedirectToLogin("WhateverPage=WhateverSectionOfCode");线来尝试解决这个问题。问题是,当我在 IE 中运行网站时,它从不附加该查询字符串,这让我相信它永远不会遇到任何“RedirectToLogin”行。

我知道它进行身份验证,因为更新数据库中上次登录时间戳的代码只有在用户通过身份验证时才会触发。看起来“RedirectFromLogin”行确实消失了,并在 web.config 中找到了正确的条目......它实际上可能正在重定向我,但即使它确实如此,它总是将我弹回登录屏幕。

我已经经历了所有可能导致此问题的真正基本的 ID-10T 错误(呵呵):增强的安全设置、禁用的 cookie 等,但我在多台机器上得到了相同的结果。

对于接下来要检查的内容,我真的有点困惑。我已经对代码进行了另外两组观察,但他们想不出任何原因来说明为什么会发生这种情况。如果有人对可能发生的事情有任何建议,我很乐意听取他们的意见。

谢谢!

最佳答案

我认为这是关于 cookie 的事情..

您是否在 web.config 中设置了域属性?

<authentication mode="Forms">
  <forms loginUrl="~/login.aspx" name="cookiename" domain="domain.com" cookieless="UseCookies" slidingExpiration="true" timeout="60"/>
</authentication>

forms Element for authentication (ASP.NET Settings Schema)

关于c# - FormsAuthentication 适用于除 IE 之外的所有浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7571227/

相关文章:

php - 为什么 PHP 不为特定用户使用 Internet Explorer 保存 session 变量?

c# - 在 C#/Asp.Net 中确定 IIS 服务器上的 "user logout"的最佳方法是什么?

c# - Windows 服务不工作

javascript - 在 C# 中使用 `x += 1` 而不是 `++x` 是否有任何副作用?

asp.net - 从 asp.net 页面打印 A4 尺寸

javascript - 使用 css 和 javascript 固定行/列标题

c# - 从 ViewModel 更改标签内容 Prop

asp.net - Application_Error 在不同线程上触发

c# - 在 ListView EmptyDataTemplate 中查找控件

javascript - 如何正确调试和确定 IE 中 js 错误的 javascript/ajax 根本原因