【问题标题】:Authentication - asp mvc area issue on routing身份验证 - 路由上的 asp mvc 区域问题
【发布时间】:2012-02-21 15:53:29
【问题描述】:

我又遇到了路由问题 :) 如果用户未通过身份验证,当我运行应用程序时,他将被重定向到登录页面。 我用FormsAuthentication 登录页面在区域帐户 当前网址是

http://localhost:38962/Account/Home/Index?ReturnUrl=%2f

从网络配置设置

<authentication mode="Forms">
      <forms loginUrl="~/Account/Home/Index" timeout="2880" />
    </authentication>

我尝试在 AccountAreaRegistration 类中设置路由

context.MapRoute("home_login",
                "",
                new { area = "Account", controller = "Home", action = "Index", ReturnUrl = UrlParameter.Optional });

和其他一些设置无法获取登录页面并且 URL 保持不变

http://localhost:38962

我在 AccountAreaRegister 中也有路线

context.MapRoute(
                "Account_default",
                "Account/{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

更新 1

   routes.MapRoute(
                    "Default",
                    "{controller}/{action}/{cityId}",
                    new { area = "MainArea", controller = "Home", action = "Index", cityId = UrlParameter.Optional },
                    new string[] { "MCN.WebUI.Areas.MainArea.Controllers" }).DataTokens.Add("area", "MainArea");

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 routing asp.net-mvc-routing asp.net-mvc-areas


    【解决方案1】:

    修复你的 MapRoute 函数调用,第二个参数应该是

    Account/{controller}/{action}
    

    去掉第三个参数中的区域

    web.config

     <authorization>
          <deny users="?"/>
        </authorization>
    

    【讨论】:

    • 还是一样。我不知道这是否重要。在 global.asax 中,我有引导用户到另一个区域页面的默认路由。此页面需要身份验证(控制器具有 Authorize 属性)。如果用户未通过身份验证,则此登录页面以整个 url 启动。
    • 您可以发布该代码吗?还有你是否在 web.config 中启用了授权?
    • 该路由应该不会引起任何问题。您确定在 web.config 中启用了授权吗?
    • 我在网络配置中没有授权。这对路由很重要吗?
    • 您可以尝试创建一个示例默认 mvc 项目并添加帐户和主要区域并设置配置并尝试吗?没有理由不工作
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多