【发布时间】:2021-09-10 02:42:30
【问题描述】:
我在 ASP.NET Core 项目中使用我的 Google 帐户进行签名时遇到问题;当我尝试登录时,我遇到了这个问题:我在 http localhost 上运行项目,我想我应该在 https localhost 中运行,但我无法使用 https 运行 Visual Studio:
这是我的控制器
[HttpPost]
public IActionResult ExternalLogin(string provider, string returnUrl)
{
var redirectUrl = Url.Action("ExternalLoginCallBack", "Account",
new { ReturnUrl = returnUrl });
var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
return new ChallengeResult(provider, properties);
}
public async Task<IActionResult> ExternalLoginCallBack(string returnUrl = null, string remoteError = null)
{
returnUrl =
(returnUrl != null && Url.IsLocalUrl(returnUrl)) ? returnUrl : Url.Content("~/");
var loginViewModel = new LoginViewModel()
{
ReturnUrl = returnUrl,
ExternalLogins = (await AccountService.GetExternalLogins()).ToList()
};
if (remoteError != null)
{
ModelState.AddModelError("", $"Error : {remoteError}");
return View("Login", loginViewModel);
}
var externalLoginInfo = await AccountService.ExternalLoginInfo();
if (externalLoginInfo == null)
{
ModelState.AddModelError("ErrorLoadingExternalLoginInfo", $"مشکلی پیش آمد");
return View("Login", loginViewModel);
}
var signInResult = await AccountService.ExternalLoginSignInAsync(externalLoginInfo.LoginProvider,
externalLoginInfo.ProviderKey);
if (signInResult.Succeeded)
{
return Redirect(returnUrl);
}
var email = externalLoginInfo.Principal.FindFirstValue(ClaimTypes.Email);
if (email != null)
{
var user = await AccountService.GetUserByEmail(email);
if (user == null)
{
var userName = email.Split('@')[0];
user = new IdentityUser()
{
UserName = (userName.Length <= 10 ? userName : userName.Substring(0, 10)),
Email = email,
EmailConfirmed = true
};
AccountService.AddUser(user);
}
AccountService.AddLoginAsync(user, externalLoginInfo);
AccountService.LoginUser(user);
return Redirect(returnUrl);
}
ViewBag.ErrorTitle = "لطفا با بخش پشتیبانی تماس بگیرید";
ViewBag.ErrorMessage = $"دریافت کرد {externalLoginInfo.LoginProvider} نمیتوان اطلاعاتی از";
return RedirectToAction("Login", "Account");
}
这是我的 startup.cs
我们将不胜感激任何帮助
【问题讨论】:
-
关联失败通常指向 cookie 不匹配
标签: asp.net-core authentication google-authenticator