首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出哪种类型的用户正在访问控制器中的动作方法代码- mvc c#

如何找出哪种类型的用户正在访问控制器中的动作方法代码- mvc c#
EN

Stack Overflow用户
提问于 2011-10-04 22:37:21
回答 3查看 283关注 0票数 1

我不知道如何提出这个问题,或者问在哪里,假设我有一个cms,它有三种类型的用户,零售商,制造商和客户支持(这个人可以访问零售商和制造商可以访问的所有信息)。现在假设有一个products控制器,它有一个名为"view products list“的操作方法。现在零售商只能在他的网站上查看产品,制造商也可以,但客户支持可以查看制造商和零售商的列表,并选择他/他想要查看的产品。假设所有这些代码都在同一个操作方法"view products list“中。现在,这是一个好的实践吗?将所有三种类型的用户的所有代码放在同一个操作方法中?其次,假设我使用的是内置登录系统和角色的mvc,我如何根据用户类型确定哪些代码(if条件)应该在action方法中运行。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-05 04:56:21

(1)在一个操作方法中使用它是很好的,如果添加了新的角色,您不希望创建新的操作方法。

你可以用例如:

代码语言:javascript
复制
If User.IsInRole("CustomerSupport") { ... }

您可能还希望考虑锁定操作方法,以便只允许访问该方法中迎合的角色。使用Authorize属性来完成此操作。例如。

代码语言:javascript
复制
[Authorize(Roles = "Retailer, Manufacturer, CustomerSupport")]
票数 0
EN

Stack Overflow用户

发布于 2011-10-04 22:49:13

在我看来,如果你对所有三种类型的用户都有相同的操作,这是很好的。有几种方法可以实现你想要的。请看一下依赖注入的例子。您希望您的存储库方法(负责调出数据)对于每种类型都不同(您可以使用工厂模式为不同类型的用户生成不同的存储库类,然后将其注入到获取数据的类中)。

票数 0
EN

Stack Overflow用户

发布于 2011-10-05 00:30:02

你的行动就是你的接入点。你不应该对每个角色都有不同的动作。如果你有30个角色,会发生什么?你会有30个动作?

同样,控制器只是您的访问点,因此用户导航到一个URL,他被路由到正确的操作方法,然后该方法应该将用户引导到正确的业务逻辑。您的业务逻辑需要确定它们是否被允许执行该操作。MVC只是您的表示,那么在不久的将来,您有多大机会不得不使用不同的表示层呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7649607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档