我不知道如何把這個問題或在哪裏問它,可以說我有一個cms,它有三種類型的用戶,零售商,製造商和客戶支持(這傢伙可以訪問零售商和製造商可以訪問的所有信息)。現在讓我們假設有一個產品控制器具有稱爲「查看產品列表」的操作方法。現在零售商只能在他的網站上查看產品,製造商也可以查看產品,但客戶支持人員可以查看製造商和零售商的列表,並選擇他/她想要查看的產品。可以說,所有這些代碼都在相同的操作方法「查看產品列表」。現在這是一個好習慣嗎?要在同一個操作方法中擁有所有三種類型用戶的所有代碼?第二我如何找出哪些代碼應該(如果條件)應該在基於用戶類型的操作方法內運行,假設我使用內置於登錄系統和角色中的mvc。如何找出哪種類型的用戶正在訪問控制器中的操作方法代碼 - mvc c#
1
A
回答
0
(1)在一個動作方法中使用這種方法很好,如果添加新角色,您不想創建新的動作方法。
(2)您可以使用例如
If User.IsInRole("CustomerSupport") { ... }
您可能還想考慮鎖定操作方法,以便只允許訪問方法內部的角色。使用[授權]屬性來完成。例如。
[Authorize(Roles = "Retailer, Manufacturer, CustomerSupport")]
0
在我看來,如果你對所有三種類型的用戶都有同樣的行爲,那就好了。有幾種方法可以實現你想要的。例如,請看一下依賴注入。您希望您的存儲庫方法(負責提供數據)對於每種類型都不同(您可以使用工廠模式爲不同類型的用戶生成不同的存儲庫類,然後將其注入到提取數據的類中)。
0
你的行爲就是你的接入點。你不應該爲每個角色採取不同的行動。如果你有30個角色會發生什麼?你會有30個動作?
再一次,控制器只是你的接入點,所以用戶導航到一個URL,他被路由到正確的操作方法,然後該方法應該引導用戶到正確的業務邏輯。這是你的商業邏輯,需要弄清楚他們是否被允許採取行動。 MVC只是你的演示文稿,那麼在不久的將來你將不得不使用不同的表示層有什麼機會呢?
相關問題
- 1. 在Asp.net中限制對控制器中操作方法的訪問MVC
- 2. 如何限制用戶訪問控制器的特定操作?
- 3. 如何從MVC控制器操作方法調用WebApi方法?
- 4. 如何在ASP.net中限制對控制器中某些操作的訪問MVC
- 5. Java:Spring MVC - 如何訪問控制器操作中的更新模型?
- 6. sendAction()方法。訪問控制器中的操作
- 7. 如何訪問同一控制器內的控制器方法
- 8. 您如何通過ruby代碼找出您所使用的控制器/操作?
- 9. MVC VaryByHeader控制器的所有操作的用戶代理
- 10. 所有控制器都可以訪問的一種方法 - 放在哪裏?
- 11. 在MVC控制器中處理DbContext,哪種方法「更好」?
- 12. ASP.NET MVC多種控制器操作在一種形式中
- 13. Angularjs如何找出當前哪個控制器正在工作
- 14. 無法在Rails中的控制器中訪問模型方法
- 15. HttpPost請求在ASP.NET MVC控制器中的操作方法
- 16. 在Rails控制器測試中,如何訪問不同的控制器操作?
- 17. 使用swift訪問其他控制器的方法,操作和/或出口
- 18. 如何限制控制器動作的訪問在ASP.net MVC 5
- 19. 哪些代碼更適合正確的MVC方法?將代碼放在控制器或ViewModel中?
- 20. 直接在方法代碼中調用DI容器(MVC操作)
- 21. 如何在我的C++代碼中用vlc sdk控制視頻輸出類型
- 22. 如何在Ruby中找出哪些類是一種方法?
- 23. 控制器在c中的操作#
- 24. 如何重定向到正確的控制器操作方法
- 25. 如何在Laravel中記錄用戶操作?如何聆聽控制器方法?
- 26. 控制器操作中的訪問模型?
- 27. 尋找一種將方面應用到spring-mvc控制器方法的方法
- 28. C#訪問方法從控制器
- 29. 如何在控制器中的操作方法中調用方法 - Ember
- 30. 未找到MVC控制器操作(404)