MVC5中的授权/角色

Jas*_*ent 6 c# asp.net-mvc-5 role-manager

我在MVC5(VS2013)中使用授权/角色时遇到了麻烦.

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

但是,我似乎无法对角色做任何事情.要做的第一件事似乎是使用C#代码添加角色,例如:

Roles.CreateRole("Admin");
Run Code Online (Sandbox Code Playgroud)

我收到一条消息的异常:

"尚未启用角色管理器功能."

我在web.config中使用以下命令启用它:

<roleManager enabled="true"/>
Run Code Online (Sandbox Code Playgroud)

现在得到例外:

"无法连接到SQL Server数据库."

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

非常感谢任何帮助.

Jas*_*ent 5

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

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

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

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

角色的等价类是Microsoft.AspNet.Identity.RoleManager.MSDN中有完整的文档


小智 0

我建议参考这篇文章,因为它展示了如何创建角色。创建所需的角色后,可以使用 UserManager.AddToRole 或 UserManager.AddToRoleAsync 方法将用户添加到特定角色。