SimpleMembershipProvider?通用提供商? WebSecurity?因为这些,我无法遵循教程

时间:2013-11-21 19:24:30

标签: asp.net-mvc-4 simplemembership

我正在关注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中使用SimpleRoleProviderDefaultRoleProvider而不是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,哪里可以获得? 为什么教程可以使用模板而不会收到错误?

0 个答案:

没有答案