我正在Visual中设计一个MVC 5 web应用程序。我在项目中添加了一个区域,它将包含特定于管理员角色中的用户的功能。
但是,管理员和默认用户都需要类似的功能和视图。例如,以这个为例
MyProject --> Controllers --> MyController --> MyActionResult
MyProject --> Areas --> Admin --> Controllers --> MyController --> MyActionResult两个控制器文件夹都包含一个ActionResult,它包含相同的逻辑,并返回相同的视图。视图将返回一个部分视图,它可以重用,因此有助于DRY (不要重复自己)原则,但是,我想知道以下几点
并将此方法设置为允许访问管理员。
[Authorize(Roles="Administrator")]
public ActionResult MyActionResult(int id)
{
}与此相关的任何帮助或建议都会得到极大的认可,我们总是努力遵循我们开发团队中的最佳实践。
谢谢大家。
发布于 2014-08-14 11:49:22
我喜欢我的领域是域或子域特定的-而不是用户或安全特定。正如您已经提到的那样,用授权注释注释您的方法/类。
If both ActionResult methods have the same logic and return the same View, then is there a need for both methods? Violation of DRY principle etc?我会说不,你不需要两者都需要,这违反了干法
Would it be better if when the Administrator needed to access this particular method, they were directed to
> MyProject --> Controllers --> MyController --> MyActionResult当然,我认为这样做更好,也是最好的做法
Or is this some kind of violation, i.e., the users in Administrator role should only be viewing pages within the Area that was setup for functionality specific to them?不行。我们总是有粒度的安全域和子域。使用授权批注控制访问。
发布于 2014-08-14 10:46:14
如果我正确地理解了这个问题,我将考虑一个基本控制器,它包含共享功能,并且附加的代码可以添加到管理区域控制器中。
关于这个视图,我只使用一些c#/vb代码来显示某些代码,如果用户是管理员的话。
例如:
@if (Roles.IsUserInRole( "Administrator" ) )发布于 2014-08-14 11:52:44
使用一个公用区域,它实际上不是路由到多个区域,而是包含多个区域共有的功能。您可以将共享视图保存在那里,并通过继承共享控制器方法。
https://stackoverflow.com/questions/25305827
复制相似问题