【发布时间】:2013-01-09 17:34:43
【问题描述】:
我已经阅读了大量的文章和论坛,但我仍然无法弄清楚...... 我正在使用 Visual Studio Express 2012 for Web 和 MVC4+Razor+Entity Framework CodeFirst 构建一个 Internet 应用程序。
据我了解,在 MVC4 中使用 SimpleMembership 管理用户和角色比以前的版本更简单,应该相当简单。
在我的应用程序中,我只需要授权某些用户组(例如,只有管理员可以访问某些页面)。我知道这是通过将参数传递给 [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
谢谢!
【问题讨论】:
-
你看到这篇文章了吗? weblogs.asp.net/scottgu/pages/…
-
谢谢 :) 但是那篇文章使用的是以前版本的 ASP.NET,并且基于 Windows 身份验证,而不是使用 Forms 的 Internet 应用程序。这就是我阅读的所有内容的问题:它都已经过时并且混合了太多东西而不是直截了当:(
标签: asp.net-mvc-4 visual-studio-2012 roles membership