使用标准的Google OAuth代码模板,在一个新的MVC项目中,是否可以限制能够创建账户的用户?
比如说,一般情况下任何持有Google账户的用户都可以在网站上创建账户。我想把账户创建限制为一个预先授权的电子邮件地址列表,实际上就是一个白名单。
在编写任何自定义代码之前,这个需求是否可以在标准的开箱即用的登录框架中实现?
使用标准的Google OAuth代码模板,在一个新的MVC项目中,是否可以限制能够创建账户的用户?
比如说,一般情况下任何持有Google账户的用户都可以在网站上创建账户。我想把账户创建限制为一个预先授权的电子邮件地址列表,实际上就是一个白名单。
在编写任何自定义代码之前,这个需求是否可以在标准的开箱即用的登录框架中实现?
var user = new ApplicationUser { UserName = model.Email, Email = model.Email, Hometown = model.Hometown };
var result = await UserManager.CreateAsync(user);
var user = new ApplicationUser { UserName = info.Email, Email = info.Email, Hometown = model.Hometown };
IdentityResult result = null;
if (!allowedUsers.Contains(info.Email))
{
result = IdentityResult.Failed("User is not in permitted list");
}
else
{
result = await UserManager.CreateAsync(user);
}
Scope
位 - 否则 info.Email
将为空: app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = "",
ClientSecret = "",
Scope = { "email" }
});
MicrosoftAccountAuthenticationOptions
中使用Scope
时,Microsoft将电子邮件命名为"wl.emails"
。UserName = info.Email, Email = info.Email
而不是只用UserName = model.Email, Email = model.Email
?既然model
也有Email
属性,为什么要使用info
而不是model
呢? - user224567893model.Email
是来自用户请求,而 info.Email
则是来自 OAuth 提供者。 - makhdumi