我一直在阅读大量文章和论坛,但我仍然无法弄清楚......我正在使用 Visual Studio Express 2012 for Web 构建一个互联网应用程序,其中包含 MVC4+Razor+Entity Framework CodeFirst。
据我了解,使用 SimpleMembership 在 MVC4 中管理用户和角色比在以前的版本中更简单,并且应该相当简单。
在我的应用程序中,我只需要授权某些用户组(例如,只有管理员可以访问某些页面)。我知道这是通过将参数传递给 [Authorize] 注释来实现的: [Authorize(Roles="Admins")] 但是如何创建这些角色以及如何向它们添加用户?
为了要求身份验证,我在控制器方法的顶部添加了注释[Authorize](没有参数),它无需进行任何额外配置或添加任何其他内容即可工作。此外,当我查看自动创建的数据库时,我看到了一个名为 pages_UsersInRoles 的表,其中包含 UserId 和 RoleId 列。所有这一切让我觉得这必须是一个非常简单的任务,因为一切似乎都已设置并准备好使用,但我就是不知道如何;)
到目前为止我尝试过的(但没有成功)是这样的:我有一个继承自 DropCreateDatabaseIfModelChanges 的“DataContextDbInitializer”类。Seed 方法在该类中被覆盖,我添加了这个(我必须导入 System.Web.Security):
Membership.CreateUser("user1", "123456");
Roles.CreateRole("Admins");
Roles.AddUserToRole("user1", "Admins");
我还在 Web.config 文件的标签中插入了这个标签:
<roleManager
enabled="true"
cacheRolesInCookie="true" >
</roleManager>
为了尝试它,我在控制器中的操作方法之上添加了 [Authorize(Roles="Admins")],然后以“admin”身份登录并尝试访问该方法,但没有运气:(
我不知道我还缺少什么......如果有人能指导我完成这个,我会非常高兴,因为它让我发疯:P
谢谢!