2014-07-10 51 views
0

我不知道如何解决该问题。简而言之 - 我想在应用程序项目的某个区域拥有单独的成员资格。但是这个“分开”的成员必须使用与“主要”成员相同的数据库。MVC区域单独成员资格

在我的主要项目中,我使用SimpleMembershipProvider

例子:

http://example.com“正常”的用户洛,我可以得到关于他在所有的主体工程控制器和视图的HttpContext.User.Identity信息 - 他只是记录。但是当他输入special区域(http://example.com/special)时,HttpContext.User.Identity必须在该区域返回空值 - 用户是“未记录”的。另一方面,当“特殊”用户输入http://example.com/special并成功登录时 - 他在所有special区域(不包括主要应用程序(仅在该区域))被授权。在主项目中,他“没有记录” - 他必须登录(具有“正常”角色的用户)。

我该如何做到这一点,而不会头痛?

+3

使用角色!对每个区域都有一个角色,然后在这些区域的每个控制器上都有'[Authorize(Roles =“ThisArea”)]',这将是我会这样做的方式!然后你可以创建一些自定义属性和过滤器! –

回答

0

您所描述的是基于角色的安全性的教科书用例。

您将角色分配给用户,并根据该角色的成员身份授予对区域的访问权限。因此,您将创建一个管理员角色,并且只将具有管理员角色的用户授予管理员部分。这可以通过`[Authorize(Roles =“Administrators”)]属性轻松完成。

您还可以在应用程序中使用角色来定义他们看到哪些字段或他们可以编辑哪些字段。您可以通过User.IsInRole("Administrators")添加代码来检查角色的访问权限,并在编辑或视图字段周围添加条件逻辑。