2013-03-14 106 views
9

我正在考慮爲我正在使用的整個MVC 4項目使用基本控制器。我在網上發現了相互矛盾的觀點,並且不確定它是否違反最佳做法,或者它只是個人偏好的問題。爲整個asp.net MVC 4項目使用基本控制器

這裏是一個計算器後,說dont do it

Here是展示瞭如何做到像有它無有害影響的職位。 Herehere以及他們解釋它的用法,沒有人真的指出這是不好的做法或可能導致任何問題前進。

那麼,在MVC 4項目中使用幾個基本控制器的觀點是什麼?好?壞?

編輯

我還想指出的是,我使用了原控制器的近期目標是,這樣我可以有權限在一個控制器完成,這樣所有的控制器不需要有授權屬性。我將爲每個角色創建單獨的基礎控制器。由於角色永遠不會改變,我將永遠不需要爲另一個角色創建另一個基礎控制器。你怎麼看待這種設計控制器的方式?

謝謝你的時間。

回答

3

我用的東西像重寫User主要打交道時(在這裏看到我的一個老問題之前,基本控制器描述該想法:Is this Custom Principal in Base Controller ASP.NET MVC 3 terribly inefficient?)。

我真的無法想到這樣做的更好方法,所以我覺得在這種使用基本控制器的情況下可能是件好事。

對於不同的授權角色,我可能不會有不同的基礎控制器,因爲它相當簡單(代碼少)只是爲了用[Authorize(Roles="whatever")]來修飾控制器,並且更容易看到發生了什麼。

這可能是值得考慮的自定義AuthorizeAttribute

+0

看到多數民衆贊成的事情。我試圖避免用授權屬性裝飾每個控制器。我只想讓初級開發人員知道,如果他們在只有管理員可以訪問的頁面上工作,那麼他們應該從AdminController繼承。我將枚舉每個角色出來與列表中的管理員號碼1 ..所以在我的自定義授權屬性我只能檢查大於或小於基地控制器提供的枚舉值 – user20358 2013-03-14 09:59:20

+0

問題可能會出現如果你對哪些角色被允許做哪些事情有複雜的要求。我在談論後來的需求是否會改變。使用某種自定義'AuthorizateAttribute'來裝飾控制器可能會更好(請參閱編輯答案中的鏈接)。 – 2013-03-14 10:55:44

+0

謝謝。將檢查出來。 – user20358 2013-03-14 14:46:09

4

恕我直言,你引用的帖子說的是絕對正確的,但這不是不使用基本控制器的原因。實際上,由於商品,我在一些ASP.NET MVC應用程序中使用了一個基本控制器。

這不再是可取的:

有一個基本的控制器應用[授權]屬性曾經是常見的做法,我看不出有什麼錯誤就可以了。

由於MVC3你可以這樣註冊的全球行動過濾器:

GlobalFilters.Filters.Add(new MyAuthorizeAttribute());

+0

感謝您的回覆。你認爲有多個角色是一個問題嗎?那麼對於每個角色我都需要一個單獨的控制器。 Admin的一個基本控制器。因此,僅管理員頁面僅從該特定控制器繼承。對於其他角色也是如此。 – user20358 2013-03-14 09:30:25

+0

如果控制器的所有操作都被授權給相同的角色,那麼對於每個角色使用分離的基本控制器都不會看到問題。 但是,如果你的控制器具有被授權給一組角色和授權給另一組角色的其他動作的授權的控制器,那麼你應該嘗試一種替代方法。 – eiximenis 2013-03-14 11:46:05

相關問題