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