3

我在 ASP.NET MVC 3 中实现了一些可爱的表单身份验证,这在 Chrome 中效果很好。现在是对世界上最糟糕的浏览器 Internet Explorer 进行测试的时候了。我只是简单地登录,每次单击提交按钮时页面都会返回登录页面。凭据是正确的。我已经逐步完成了代码,我正在对页面使用 RedirectToAction,并且没有标记任何错误,它只是直接返回到登录页面。

我应该指出我已经尝试了以下方法:

  • 删除了 webmatrix dll 和依赖项
  • 删除 System.Web.Helpersn
  • 这些都已从 bin、引用和 VS2010 中的 bin_deploayableAssemblies 文件夹中删除

我还在 web.config appsettings 中添加了以下内容:

<add key="enableSimpleMembership" value="false" />
<add key="autoFormsAuthentication" value="false" />
<add key="loginUrl" value="~/LoginReg/LogOn"/>

这是我的完整 web.config:

http://pastebin.com/t6cj6cSb

我应该指出我的登录页面位于名为:Login Reg 的文件夹中,因此 URL 将是 /LoginReg/LogOn。

这在 chrome 中完美运行,但由于某种原因在 Internet Explorer 中不起作用。

有没有人有任何想法来解决这个非常烦人的问题或有任何有用的文章

谢谢

4

3 回答 3

1

表单身份验证创建一个 http cookie 来维护请求之间的身份验证状态。确保您在 IE 中启用了 cookie。

于 2012-07-28T17:47:55.870 回答
0

我为这个问题找到了一个奇怪的解决方案,就我而言,我有一个 MVC3 解决方案,当然我的问题和原帖一样,我所做的很奇怪:

  1. 我将 LogOn get/post 方法重命名为LoginPageView
  2. 当然我为LoginPageViewController动作 创建了对应的VIEW

    [HttpGet]
    public ActionResult LoginPageView()
    {
        return View();
    }
    
  3. 我跑了,我可以重定向到解决方案上的任何其他控制器操作,当然要注意[Authorize]我需要的方法的 or not authorize 属性。

  4. 问题解决了。

于 2015-10-23T20:17:22.313 回答
0

这是通过向 FilterConfig.cs 文件添加全局过滤器来解决我的问题的解决方案。

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
       filters.Add(new AuthorizeAttribute());
    }
}

现在登录与 Internet Explorer 和 Microsoft Edge 浏览器完美配合。

于 2016-04-05T10:52:51.763 回答