2

我在让 Google OAuth 与 Visual Studio 2012 中的默认 MVC4 Internet 应用程序项目模板一起工作时遇到问题。

在重定向到 Google 并随后注册用户名后,我在 AccountController 的第 276 行收到了MembershipCreateUserException ,并显示以下消息:

提供的用户名无效。

失败的代码行是:

OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);

我检查了数据库,并且 UserProfiles 表包含我按预期输入的用户名,并且我尝试了各种用户名组合。

我是否错过了一些东西,因为源代码中的链接文章都没有建议其他需要配置的东西?

4

2 回答 2

1

首先,我想在这里留下我的经验。(asp.net mvc4)

  1. 更改 SimpleMembership 提供程序的 dbcontext。转到过滤器文件夹-> 打开 InitializeSimpleMembershipAttribute。然后做这样的改变。因此它将在您的数据库中包含成员资格表。

    WebSecurity.InitializeDatabaseConnection("ChangeYourDbContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);
    
  2. 去AccontController。查找 UserContext,默认情况下使用 defaultConnection 字符串。转到 UserContext 声明 ( f12)。并将 UserContext Connectionstring 覆盖到您的实际 Dbcontext

    public UsersContext(): base("YourAcutalDbContext")
    {
    
    }
    
于 2013-04-28T14:02:31.037 回答
1

我想我想通了。OAuthWebSecurity.CreateOrUpdateAccount 需要在 Users 表中有一个用户。

问题是,该方法将在表中“创建”一条新记录,该记录webpages_OAuthMembership具有用户表的外键。

因此,为了使您的调用正常工作,要么首先通过 WebSecurity.CreateAccount 创建一个新用户,要么编写一些手动代码将用户添加到表中。

我选择了 WebSecurity.CreateAccount 并使用 GeneratePassword 方法来解决这个问题。

希望能帮助到你。

于 2012-12-30T23:38:01.140 回答