-1

我有一个运行良好的现有 ASP.NET MVC 应用程序。它为一组选定的人员提供了一组管理功能。我现在的任务是允许更大的组访问完全相同的应用程序的非常有限的部分。

ASP.NET MVC 区域是执行此操作的方法吗?我问的原因是因为我想让所有用户访问同一个网页(例如 mysite.com),并且我希望外观保持不变(利用相同的母版页文件或 _Layout.cshtml )。

当前的设置是所有用户对系统提供的所有数据都具有平等的访问权限(完全)。

所以当鲍勃去

/People/Index 

他看到了一切,而当 Sally 看到时,她也看到了同样的东西。

现在我需要允许更多的人访问同样的东西。所以当辛迪去

/People/Index

她将看到的只是直接向她报告的人,对于 Dave 和其他所有不属于“管理员”组的人来说都是如此,他们可以完全访问所有内容。

这里的 uri 对我来说并不重要;但我想要做的是能够回收相同的布局和视图,同时使用一组不同的控制器(它们有额外的业务逻辑来只显示数据的子集)。

ASP.NET MVC 区域是执行此操作的正确方法吗?如果没有,指向正确方向的指针?

4

2 回答 2

1

如果唯一的要求是数据仅限于与用户直接相关的人员/项目,我会在您的数据层中执行此操作。当你去加载用户列表时,只返回 Cindy 可以访问的用户。也许有一个用户表标志来判断用户是否是管理员用户。

public IEnumerable<User> GetUsers(User requestingUser)
{
    if(requestingUser.IsAdmin) // return your full list of users

    return // list of users filtered by reporting to requestingUser
}

如果您在数据层中执行所有这些逻辑,则用户都使用相同的站点并通过相同的页面流,页面中显示的内容是有限的。当然,您也可以在渲染视图的某些部分时测试用户的管理员标志等。

于 2012-11-20T20:01:29.930 回答
0

我认为您在 ASP MVC 方面处于良好的轨道上,您希望看到的是在您的应用程序中实现角色,并基于角色向用户提供某些信息,如果用户执行相同的功能我不会使用这些区域如果我正确理解您的问题,您没有在博客、购物等具有完全不同功能的同一应用程序下开发不同方面,请查看角色和会员资格

http://www.asp.net/web-forms/videos/how-do-i/how-do-i-secure-my-site-using-membership-and-roles

于 2012-11-20T20:04:12.030 回答