MVC5中的授权/角色

时间:2013-12-30 18:12:00

标签: c# asp.net-mvc-5 role-manager

我在MVC5(VS2013)中使用授权/角色时遇到了问题。

身份验证几乎可以开箱即用(也就是说只需使用Visual Studio创建默认的MVC项目)。我将DefaultConnection连接字符串更改为有效(但不存在)的数据库。然后我注册一个新用户,并使用AspNetUsersAspNetRoles等表格自动创建数据库。

然而,我似乎无法对角色做任何事情。首先要做的是用C#代码添加一个角色,如:

Roles.CreateRole("Admin");

我收到一条消息:

  

'尚未启用角色管理器功能。'

我在web.config中启用它:

<roleManager enabled="true"/>

现在得到例外:

  

'无法连接到SQL Server数据库。'

这曾经很容易与System.Web.Security.SqlRoleProvider一起使用,但不适用于MVC5默认的新提供程序。关于这一点有很多非常复杂的文章,但在我看来,它是如此必要和直接的东西,必须有一个简单的方法来使它工作。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

我现在已经解决了这个问题。事实证明,Roles类与MVC5中的角色管理完全无关,至少在开箱即用配置方面是这样。

Roles类和Membership类仍然存在,Provider被配置为SqlMembershipProvider

但是,这不是AccountController使用的提供程序,它根本不使用Membership类;它使用Microsoft.AspNet.Identity.UserManager

虽然生成的AccountController提供了大量使用UserManager的示例,但它与角色无关。

角色的等效类是Microsoft.AspNet.Identity.RoleManagerMSDN

中有完整的文档

答案 1 :(得分:0)

我建议引用此article,因为它显示了如何创建角色。一旦创建了所需的任何角色,就可以使用UserManager.AddToRole或UserManager.AddToRoleAsync方法将用户添加到特定角色。