Asp.net mvc 4 如何在MVC4中更改AccountController的默认重定向行为

Asp.net mvc 4 如何在MVC4中更改AccountController的默认重定向行为,asp.net-mvc-4,forms-authentication,simplemembership,Asp.net Mvc 4,Forms Authentication,Simplemembership,我正在开发一个ASP.netmvc4应用程序。我使用了SimpleMembershipProvider和默认的AccountController,但想稍微修改一下行为 现在我的应用程序有两个逻辑部分-用户部分和管理面板。我也有两个角色-用户和管理员,我所有的管理员面板逻辑都在AdminController中 只有提供正确的URL才能访问管理面板,例如-localhost:51200/admin,因此我显示了一个Login页面 所以问题是,我没有像默认模板创建的那样的标准登录页面。现在我修改了Ac

我正在开发一个
ASP.netmvc4
应用程序。我使用了
SimpleMembershipProvider
和默认的
AccountController
,但想稍微修改一下行为

现在我的应用程序有两个逻辑部分-用户部分和管理面板。我也有两个角色-用户和管理员,我所有的管理员面板逻辑都在
AdminController

只有提供正确的URL才能访问管理面板,例如-
localhost:51200/admin
,因此我显示了一个
Login
页面

所以问题是,我没有像默认模板创建的那样的标准登录页面。现在我修改了
AccountController
,如下所示:

[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Login(LoginModel model, string returnUrl)
        {
            string controllerName = HttpContext.Request.RequestContext.RouteData.Values["controller"].ToString();
            if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
            {
                //return RedirectToLocal(returnUrl);
                return RedirectToAction("ManageContent", "Admin");
            }
            //string controllerName = HttpContext.Request.RequestContext.RouteData.Values["controller"].ToString().ToLower();


            // If we got this far, something failed, redisplay form
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
            return RedirectToAction("Index", "Home");
        }
我希望能够根据用户尝试登录的位置,确定如果身份验证/授权失败,用户将被重定向到哪里。在我的
AdminController
中,我有
[Authorize(Roles=“Admin”)]
,因此无论标准用户是否转到
localhost:5555/Admin
并提供了正常凭据,但没有必要的级别或只是不正确的登录信息,如果从
localhost:6477/admin
尝试登录,我希望能够将用户重定向到特定的控制器/操作(很可能再次是
localhost:54555/admin
),并且如果用户尝试从其他地方登录,无论在何处,我都希望设置另一个重定向位置

我有这个:

string controllerName = HttpContext.Request.RequestContext.RouteData.Values["controller"].ToString();

只是为了检查我是否能够获得控制器,这似乎是可能的,因此这可能是部分解决方案,但我不知道如果重定向来自
[Authorize(Roles=“Admin”)]

您应该查看区域。这允许您拥有两个同名的控制器/视图,并且可以根据角色进行分离但是,如果我们只针对这个特定的问题进行讨论,那么如果我只为-
AdminController
编写一个登录逻辑,它将仅在您尝试登录管理面板时使用,而在
AccountController
中为应用程序的其余部分编写另一个登录逻辑时使用,这不一样吗。我认为我将在这里完成的是通过在两个地方没有相同的代码来保持它的干燥。