2010-06-25 56 views
5

我使用.NET mvc2作爲我的應用程序。我想對我的操作進行一些自定義授權。我搜索了一下,似乎有兩個選項可用。授權過濾器vs動作過濾器

  • 在onActionExecuting自定義操作過濾器實現邏輯,see this post
  • 子類authorizeattribute或實現Iauthorization接口,並把我的邏輯有

在這裏,我的問題是,哪種技術最好有優點和缺點使用每種技術

編輯:此外,我可以重寫onActionExecuting和onAuthorization在我的基礎控制器,使我的好處訪問控制器變量直接年。

+0

您是否發現任何正反​​兩面? 現在我正在處理同一個問題。 你的解決方案是什麼? – 2011-01-06 13:15:42

+0

使用onActionExecuting也爲您提供訪問私有成員的好處。而在過濾器中,你可能只能訪問公共屬性和方法。我使用了AuthorizeAttribute的子類,因爲這就是它的作用,並且讓你清楚地分離關注點 – 2011-01-07 05:55:11

回答

3

雖然這兩個選項都行,最好是繼承AuthorizeAttribute這些原因:

  1. 分離的擔憂。
  2. MVC爲此提供了AuthorizeAttribute(不打架構)。
  3. 授權過濾器首先運行 - 在其他過濾器(每個Pro ASP.NET MVC3框架,頁面431)之前運行。這確保如果未經授權的用戶訪問您的控制器/操作,則不會執行不必​​要的代碼。