我正在关注Pluralsights MVC4 Essentials课程。在关于授权的视频中,它启用了DefaultRoleProvider
中的Web.config
(虽然我没有使用相同的MVC4互联网模板创建项目。在通过nuget安装Universal Providers后,我按照教程并更改了Seed()
方法以生成用户并分配角色。
if (!Roles.RoleExists("Admin"))
{
Roles.CreateRole("Admin");
}
if (Membership.GetUser("sallen") == null)
{
Membership.CreateUser("sallen", "password");
Roles.AddUserToRole("sallen", "admin");
}
启动应用程序并尝试登录时,我收到了To call this method, the "Membership.Provider" property must be an instance of "ExtendedMembershipProvider".
消息,Google为此提供了大量点击。 This article by Jon Galloway似乎解释了这个问题,但他的解决方案对我来说似乎很神秘:
如果您想使用新的
AccountController
,则需要使用SimpleMembershipProvider
或其他有效ExtendedMembershipProvider
。这非常简单。
好吧,我从哪里得到它?
解决方法是在SimpleMembership
中使用SimpleRoleProvider
和DefaultRoleProvider
而不是Web.config
...,在seed()
方法中初始化数据库连接
WebSecurity.InitializeDatabaseConnection(
"DefaultConnection",
"UserProfile",
"UserId",
"UserName", autoCreateTables: true);
并使用
if (!WebSecurity.UserExists("sallen"))
{
WebSecurity.CreateUserAndAccount("sallen", "password");
Roles.AddUserToRole("sallen", "admin");
}
生成我的用户。
这是我需要使用的SimpleMembershipProvider吗?这是使用授权的常用方法吗?为什么模板中包含的提供程序不是ExtendedMembershipProvider
,哪里可以获得? 为什么教程可以使用模板而不会收到错误?