我在MVC5(VS2013)中使用授权/角色时遇到了问题。
身份验证几乎可以开箱即用(也就是说只需使用Visual Studio创建默认的MVC项目)。我将DefaultConnection
连接字符串更改为有效(但不存在)的数据库。然后我注册一个新用户,并使用AspNetUsers
和AspNetRoles
等表格自动创建数据库。
然而,我似乎无法对角色做任何事情。首先要做的是用C#代码添加一个角色,如:
Roles.CreateRole("Admin");
我收到一条消息:
'尚未启用角色管理器功能。'
我在web.config中启用它:
<roleManager enabled="true"/>
现在得到例外:
'无法连接到SQL Server数据库。'
这曾经很容易与System.Web.Security.SqlRoleProvider
一起使用,但不适用于MVC5默认的新提供程序。关于这一点有很多非常复杂的文章,但在我看来,它是如此必要和直接的东西,必须有一个简单的方法来使它工作。
非常感谢您的帮助。
答案 0 :(得分:5)
我现在已经解决了这个问题。事实证明,Roles类与MVC5中的角色管理完全无关,至少在开箱即用配置方面是这样。
Roles类和Membership类仍然存在,Provider被配置为SqlMembershipProvider
。
但是,这不是AccountController
使用的提供程序,它根本不使用Membership类;它使用Microsoft.AspNet.Identity.UserManager
。
虽然生成的AccountController
提供了大量使用UserManager
的示例,但它与角色无关。
角色的等效类是Microsoft.AspNet.Identity.RoleManager
。 MSDN
答案 1 :(得分:0)
我建议引用此article,因为它显示了如何创建角色。一旦创建了所需的任何角色,就可以使用UserManager.AddToRole或UserManager.AddToRoleAsync方法将用户添加到特定角色。