MVC区域独立成员资格

时间:2014-07-10 17:52:39

标签: c# asp.net asp.net-mvc asp.net-mvc-4 simplemembership

我不知道如何解决这个问题。简而言之 - 我希望在应用项目的某个区域拥有单独的成员资格。但这个"分开"会员必须使用与" main"相同的数据库。会员。

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

示例:

当"正常" http://example.com上的用户登录我可以在主项目的所有控制器和视图中使用HttpContext.User.Identity获取有关他的信息 - 他刚刚登录。但是当他进入special区域(http://example.com/special)时,HttpContext.User.Identity必须在该区域返回null - 用户是"未记录"。

另一方面,当"特殊"用户输入http://example.com/special并成功登录 - 他在所有special区域获得授权,不包括主应用程序(仅限该区域)。在主要项目中,他是" unlogged" - 他必须登录(具有"正常"角色的用户)。

如何在没有头痛的情况下实现这一目标?

1 个答案:

答案 0 :(得分:0)

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

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

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