9
我一直在寻找类似的东西,但没有运气。我想要构建一个应用程序,为相同的URL使用不同的控制器。基本的想法就像是,如果用户以管理员身份登录,他使用可以说管理员控制器,如果用户只是一个用户,他使用用户控制器。这仅仅是一个例子,基本上我想有一个决定控制器路由的功能。定义条件路线
谢谢大家。任何帮助是极大的赞赏。
PS 使用此的: 管理员拥有不同的用户界面和选项, 输出醒目, 分离关注的
我一直在寻找类似的东西,但没有运气。我想要构建一个应用程序,为相同的URL使用不同的控制器。基本的想法就像是,如果用户以管理员身份登录,他使用可以说管理员控制器,如果用户只是一个用户,他使用用户控制器。这仅仅是一个例子,基本上我想有一个决定控制器路由的功能。定义条件路线
谢谢大家。任何帮助是极大的赞赏。
PS 使用此的: 管理员拥有不同的用户界面和选项, 输出醒目, 分离关注的
你需要创建一个RouteConstraint检查用户的角色,如下所示:
using System;
using System.Web;
using System.Web.Routing;
namespace Examples.Extensions
{
public class MustBeAdmin : IRouteConstraint
{
public MustBeAdmin()
{ }
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
// return true if user is in Admin role
return httpContext.User.IsInRole("Admin");
}
}
}
然后,在默认路由之前,为Admin角色声明路由,如下所示:
routes.MapRoute(
"Admins", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Admin", action = "Index", id = UrlParameter.Optional }, // Parameter default
new { controller = new MustBeAdmin() } // our constraint
);
counsellorben
非常感谢。我测试了它,它工作。谢谢你。 – 2011-05-04 19:03:54
这个tipp也帮助了我! – SQueek 2014-02-14 08:54:15
在代码中提及用户是否以正常用户身份登录,那么他/她将被重定向到用户控制器? – Thomas 2016-03-07 17:59:47