asp.net-mvc – ASP.NET MVC:Action中的授权 – 建议的模式或这是一种气味?
|
我有一个使用控制器和操作的授权属性的ASP.NET MVC应用程序.这一直很好,但新的皱纹已经出现了. 对象:装运 角色:运输,会计,一般用户 货物通过工作流程移动.在状态A,它可以通过装运编辑.在状态B,它可以由会计编辑. 我有一个装运控制器和一个编辑动作.我可以将授权属性限制为只有这两个角色的编辑操作,但这并不区分装运的状态.在服务调用之前,我需要在操作中做一些授权,以确定用户是否真的有权执行编辑动作. 所以我留下了两个问题: 1)什么是在Action中有权限的好方法.控制器操作调用服务,然后服务对装运对象进行适当的调用(更新数量,更新日期等).我确信我想要装运对象与任何授权要求无关.另一方面,如果我想要服务对象知道授权,我没有真正的把握.有没有什么好的模式呢? 2)我的问题实际上是坏设计的症状吗?我应该有一个StateAShipmentController和StateBShipmentController,而不是ShipmentController?我没有在Shipment对象中内置任何多态(状态只是一个枚举),但也许我应该也可能控制器应该反映出来. 我想我是在更一般的解决方案之后,而不是一个特定的解决方案.我只想举一个例子来说明这个问题. 谢谢! 解决方法您的授权属性可以从操作参数或路线数据获取货物,然后作出决定.对于第1号,有许多模式可以在域对象中实现丰富的行为.在双重分派中,您将对服务抽象(接口)的引用传递给对象上的方法.那么它可以做它的事情.您还可以编写一个应用程序服务,该服务采用装运并进行工作. 在第2号,不一定.您可能需要将“上下文装运”的概念抽象为一项服务,以确定您所在的哪个装运上下文.但是,我将YAGNI,直到您再次需要它. (编辑:吉安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何在ASP.NET MVC中传递页面的元标记?
- asp.net-mvc – 如何使用Visual Studio 2013和Entity Frame
- asp.net-mvc-3 – “区域”文件夹中的样式,脚本和图像
- 在asp.net中使用eval(“”)
- asp.net – 按钮属性: – commandName和CommandArguments
- asp.net-mvc-3 – “字段宽度必须是数字.”在客户端
- ASP.NET中操作SQL数据库(连接字符串的配置及获取)
- asp.net-mvc-4 – 全局过滤器MVC 4的执行顺序是什么
- kendo-ui – 剑道网格刷新(数据绑定两次)
- asp.net-mvc – 在ASP.NET MVC中的LinkButton
- asp.net-mvc – ASP.NET MVC中的WebApi [FromUri
- asp.net核心 – 如何排除在ASP.NET Core中发布文
- asp.net – 我可以在超链接上显式指定NavigateUr
- asp.net – 如何使用resxresourcewriter写入所有
- asp.net-mvc – 如何忽略ASP.NET MVC 4中特定Vie
- iis-7.5 – 使用虚拟目录/应用程序在IIS中托管AS
- MVC .Net Cascade在使用EF Code First Approach时
- asp.net – 如何使用Inno Setup脚本创建IIS应用程
- asp.net-mvc – 如何从mvc中的控制器中设置隐藏字
- ASP.NET MVC学习教程之Razor语法
