我无法让Google OAuth在Visual Studio 2012中使用默认的MVC4 Internet应用程序项目模板。
重定向到Google并随后注册用户名后,我在AccountController的第276行收到 MembershipCreateUserException ,并显示以下消息:
提供的用户名无效。
失败的代码行是:
OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
我已经检查了数据库,UserProfiles表包含我按预期输入的用户名,我尝试了各种用户名组合。
我是否遗漏了一些内容,因为源代码中的链接文章都没有提出其他需要配置的内容?
答案 0 :(得分:1)
我想我明白了。 OAuthWebSecurity.CreateOrUpdateAccount需要在Users表中拥有一个用户。
问题是,该方法将"创建" webpages_OAuthMembership
表中的新记录,其中包含用户表的外键。
因此,为了使您的呼叫工作首先通过WebSecurity.CreateAccount创建新用户,或者编写一些手动代码以将用户添加到表中。
我选择了WebSecurity.CreateAccount并使用GeneratePassword方法解决了这个问题。
希望它有所帮助。
答案 1 :(得分:1)
首先,我想留下我的经验。 (asp.net mvc4)
更改SimpleMembership提供程序的dbcontext。转到过滤器文件夹 - >打开InitializeSimpleMembershipAttribute。然后做这样的改变。因此它将包括数据库中的成员资格表。
WebSecurity.InitializeDatabaseConnection("ChangeYourDbContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);
转到AccontController。查找UserContext,默认情况下使用defaultConnection字符串。转到UserContext声明( f12 )。 并将UserContext Connectionstring重写为您的actualDbcontext
public UsersContext(): base("YourAcutalDbContext")
{
}