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