我不知道如何提出这个问题,或者问在哪里,假设我有一个cms,它有三种类型的用户,零售商,制造商和客户支持(这个人可以访问零售商和制造商可以访问的所有信息)。现在假设有一个products控制器,它有一个名为"view products list“的操作方法。现在零售商只能在他的网站上查看产品,制造商也可以,但客户支持可以查看制造商和零售商的列表,并选择他/他想要查看的产品。假设所有这些代码都在同一个操作方法"view products list“中。现在,这是一个好的实践吗?将所有三种类型的用户的所有代码放在同一个操作方法中?其次,假设我使用的是内置登录系统和角色的mvc,我如何根据用户类型确定哪些代码(if条件)应该在action方法中运行。
发布于 2011-10-05 04:56:21
(1)在一个操作方法中使用它是很好的,如果添加了新的角色,您不希望创建新的操作方法。
你可以用例如:
If User.IsInRole("CustomerSupport") { ... }您可能还希望考虑锁定操作方法,以便只允许访问该方法中迎合的角色。使用Authorize属性来完成此操作。例如。
[Authorize(Roles = "Retailer, Manufacturer, CustomerSupport")]发布于 2011-10-04 22:49:13
在我看来,如果你对所有三种类型的用户都有相同的操作,这是很好的。有几种方法可以实现你想要的。请看一下依赖注入的例子。您希望您的存储库方法(负责调出数据)对于每种类型都不同(您可以使用工厂模式为不同类型的用户生成不同的存储库类,然后将其注入到获取数据的类中)。
发布于 2011-10-05 00:30:02
你的行动就是你的接入点。你不应该对每个角色都有不同的动作。如果你有30个角色,会发生什么?你会有30个动作?
同样,控制器只是您的访问点,因此用户导航到一个URL,他被路由到正确的操作方法,然后该方法应该将用户引导到正确的业务逻辑。您的业务逻辑需要确定它们是否被允许执行该操作。MVC只是您的表示,那么在不久的将来,您有多大机会不得不使用不同的表示层呢?
https://stackoverflow.com/questions/7649607
复制相似问题