6

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

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

但是,我似乎对角色无能为力。首先要做的似乎是使用 C# 代码添加一个角色,例如:

Roles.CreateRole("Admin");

我收到一条消息异常:

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

我在 web.config 中启用它:

<roleManager enabled="true"/>

现在得到异常:

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

这过去很容易与. 一起使用System.Web.Security.SqlRoleProvider,但不适用于 MVC5 默认提供的新提供程序。关于这方面有很多非常复杂的文章,但在我看来,它是如此重要和直接,以至于必须有一种简单的方法让它发挥作用。

非常感谢您的帮助。

4

2 回答 2

5

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

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

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

虽然 generateAccountController提供了大量的 using 示例UserManager,但它与角色无关。

Roles 的等效类是Microsoft.AspNet.Identity.RoleManager. 在MSDN中有完整的文档

于 2014-02-02T11:40:45.220 回答
0

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

于 2014-01-29T21:42:40.223 回答