2016-06-21 91 views
1

我剛剛開始使用Asp.Net核心(和一般的asp.net),我正在爲我的其餘api構建好的控制器類。重用Asp.Net核心控制器的路由和邏輯

我試圖從基站控制器繼承,以避免重新定義路由和邏輯,諸如驗證對於像這樣的資源(非工作實施例):

[Route("/api/v1/users/{id}")] 
public class UserController: Controller 
{ 
    protected int userId; 
    public override void OnActionExecuting(ActionExecutingContext context) 
    { 
     base.OnActionExecuting(context); 
     // Validate userId.. 
     userId = (int) RouteData.Values["id"]; 
    } 

    [HttpGet] 
    public IActionResult Info() 
    { 
     // Use this.userId here 
     return this.Json("User info.."); 
    } 
} 

[Route("/friends")] 
public class UserFriendsController: UserController 
{ 
    [HttpGet] 
    public IActionResult Info() 
    { 
     // Use this.userId here 
     return this.Json("List of user's friends.."); 
    } 
} 

原來自己可以把這個成一個類有多個動作,但是我的真實場景涉及更多控制器,所有這些控制器都可能想要從UserController繼承。

回答

1

我試圖從基本控制器繼承,以避免重新定義 路線和邏輯如驗證資源

如果您想檢查當前用戶是否具有輔助功能不管你的資源是否合適,你都應該使用Resource Based Authorization。對於其他橫切問題,您可以使用FiltersMiddlewares