2011-10-04 57 views
1

我不知道如何把這個問題或在哪裏問它,可以說我有一個cms,它有三種類型的用戶,零售商,製造商和客戶支持(這傢伙可以訪問零售商和製造商可以訪問的所有信息)。現在讓我們假設有一個產品控制器具有稱爲「查看產品列表」的操作方法。現在零售商只能在他的網站上查看產品,製造商也可以查看產品,但客戶支持人員可以查看製造商和零售商的列表,並選擇他/她想要查看的產品。可以說,所有這些代碼都在相同的操作方法「查看產品列表」。現在這是一個好習慣嗎?要在同一個操作方法中擁有所有三種類型用戶的所有代碼?第二我如何找出哪些代碼應該(如果條件)應該在基於用戶類型的操作方法內運行,假設我使用內置於登錄系統和角色中的mvc。如何找出哪種類型的用戶正在訪問控制器中的操作方法代碼 - mvc c#

回答

0

(1)在一個動作方法中使用這種方法很好,如果添加新角色,您不想創建新的動作方法。

(2)您可以使用例如

If User.IsInRole("CustomerSupport") { ... } 

您可能還想考慮鎖定操作方法,以便只允許訪問方法內部的角色。使用[授權]屬性來完成。例如。

[Authorize(Roles = "Retailer, Manufacturer, CustomerSupport")] 
0

在我看來,如果你對所有三種類型的用戶都有同樣的行爲,那就好了。有幾種方法可以實現你想要的。例如,請看一下依賴注入。您希望您的存儲庫方法(負責提供數據)對於每種類型都不同(您可以使用工廠模式爲不同類型的用戶生成不同的存儲庫類,然後將其注入到提取數據的類中)。

0

你的行爲就是你的接入點。你不應該爲每個角色採取不同的行動。如果你有30個角色會發生什麼?你會有30個動作?

再一次,控制器只是你的接入點,所以用戶導航到一個URL,他被路由到正確的操作方法,然後該方法應該引導用戶到正確的業務邏輯。這是你的商業邏輯,需要弄清楚他們是否被允許採取行動。 MVC只是你的演示文稿,那麼在不久的將來你將不得不使用不同的表示層有什麼機會呢?

相關問題