1

我在断点上有这段代码,它适用于 Windows 上除 Safari 之外的所有浏览器,当我登录时,它总是显示用户未通过身份验证。

我将 Safari 重置为默认值。

在我的 web.Config 文件中,我添加了

<authentication mode="Forms">
  <forms loginUrl="~/Login.aspx" defaultUrl="~/ToolsHome.aspx" timeout="2880" cookieless="UseCookies" />
</authentication>

无法让 Safari 工作。

我没有指定 cookie 名称?我在本地主机上运行它,然后当我将它上传到我的域时,同样的问题。

if (!User.Identity.IsAuthenticated)
{
    Response.Redirect("Login.aspx");
}
else
{
    if (HttpContext.Current.User.IsInRole("Physician") 
        || HttpContext.Current.User.IsInRole("Staff"))
    {
         if (Session["loggedin"] != null)
         {
              Session["PatientID"] = Session["loggedin"].ToString();
         }
    }
}
4

1 回答 1

2

也许一个迟到的答案,但我有这个问题。我通过将 cookieless="UseCookies" 添加到 web.config 中的 forms-tag 来解决它。当您在 iOS 中使用 Chrome 或在 Mac 上的内置应用程序中使用 Safari 时,auth-cookie 被丢弃。

这仅在 NET4.0 中发生,如果升级到 NET4.5 即可解决。

有关更多信息,请阅读本文: http ://www.hanselman.com/blog/FormsAuthenticationOnASPNETSitesWithTheGoogleChromeBrowserOnIOS.aspx

于 2013-06-24T18:47:23.557 回答