ASP.NET MVC 4显示模式和表单身份验证的问题

时间:2012-10-02 19:08:15

标签: asp.net-mvc asp.net-mvc-3 razor forms-authentication

我有一个使用表单身份验证的ASP.NET MVC 4应用程序(我从ASP.NET MVC 4移动模板开始)。我还添加了显示模式功能来支持移动设备。但是,表单身份验证似乎不适用于这些不同的显示模式。

在Global.asax Application_Start中,我有

DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

注册iPhone的显示模式。

在〜/ Views / Shared中,我有桌面浏览器的_Layout.cshtml和iPhone的_Layout.iPhone.cshtml。在〜/ Views / Home中,我有用于桌面浏览器的Index.cshtml和用于iPhone的Index.iPhone.cshtml。在〜/ Views / Account中,我有ASP.NET MVC 4移动Web模板(索引,登录,注册等)附带的标准.cshtml文件。

在FilterConfig.cs RegisterGlobalFilters中,我添加了filters.Add(new System.Web.Mvc.AuthorizeAttribute());因此需要在站点中的任何位置进行身份验证(AccountController除外,它在Login和Register操作方法上有[AllowAnonymous])。

这是所有基本内容并且设置正确。当在浏览器中导航到站点时(从桌面浏览器和iPhone浏览器),显示模式设置/配置工作得很好,我被带到正常的.cshtml文件或iPhone特定的文件。

添加表单身份验证时会出现问题。

当我第一次访问该网站时,由于我未经过身份验证,因此我被重定向到“登录”页面(正如预期的那样)。该网址显示为http://localhost:63087/Account/Login?ReturnUrl=%2f。登录后,我将重定向回根目录并进入正确的显示模式。一切都很好。

但是,URL不会更改。它保持为http://localhost:63087/Account/Login?ReturnUrl=%2f。这是个问题。现在任何未来的导航都会混淆并将我发送回登录页面(即使我已经登录并经过身份验证)。

如何解决这个问题?

如何使用多种显示模式的ASP.NET MVC 4应用程序与表单身份验证一起正常工作?

感谢。

0 个答案:

没有答案