我有一个MVC4应用程序设置有多个区域.每个区域都必须有自己的登录页面.比方说,我有以下几个方面:
主要管理员
如何设置它以使"主"区域具有与"管理"区域不同的登录页面?我在想web.config不是这样的方法.
目前我在我的根web.config文件中有以下内容:
但是,我正在努力研究如何使用区域来适应MVC4.
请帮忙.
我不知道你是否可以使用每个文件夹中的配置文件.如果可以,请使用该解决方案.如果你不能,这里有一个你可以使用的自定义动作过滤器:
public class AreaAuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute { protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { string area = filterContext.RouteData.Values.ContainsKey("area") ? filterContext.RouteData.Values["area"].ToString() : null; if (area == "Admin") { RouteValueDictionary routeValues = new RouteValueDictionary { {"controller" , "Login"}, {"action" , "Index"}, {"area" , "Admin"} }; filterContext.Result = new RedirectToRouteResult("AdminAreaRoute", routeValues); } else if (area == "User") { RouteValueDictionary routeValues = new RouteValueDictionary { {"controller" , "Login"}, {"action" , "Index"}, {"area" , "User"} }; filterContext.Result = new RedirectToRouteResult("UserAreaRoute", routeValues); } base.HandleUnauthorizedRequest(filterContext); } }
您可能需要修复路由名称,我不记得ASP.NET MVC是否为每个区域生成了路由.然后你可以像这样使用它:
[AreaAuthorize] public ViewResult Index() { return View("Index"); }