1

我有一个从 Internet 模板创建的 MVC 应用程序以使用表单身份验证,当用户登录时,我想将他们定向到主页|关于页面。

LogOn 方法是由项目模板创建的,无需修改;

    [HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
           // etc, etc
        }

        return View(model);
    }

我在 Web.config 中设置了 defaultUrl,如下所示;

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" defaultUrl="~/Home/About"/>
</authentication>

但是,当调用 HomeController.LogOn 时,returnUrl 参数始终为空。注意 LogOn 方法上的 HttpPost 属性,因此不能在查询字符串中传递 url。

如何配置返回 url,以便将其传递给 LogOn 操作方法,并在登录后将用户定向到 url 的位置?

4

1 回答 1

1

最简单的方法是将 Global.asax 中的默认路由更改为指向/Home/About而不是/Home/Index

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "About", id = UrlParameter.Optional } // Parameter defaults
    );
}
于 2012-06-21T00:12:04.820 回答