我有以下代码,用于检查使用Google验证用户。 我尝试了3种方法(2个signin()和设置用户属性)。 signin似乎没有做任何事情(用户属性根本没有改变),即使是设置用户属性的方法,它似乎也不记得更改,我最终陷入无限重定向循环中,我无法弄清原因。
PS:路由和代码流程确实有效,只是当我重定向到“主页索引”时,身份验证未被识别,我被送回到此逻辑。
FYI:ChallengeResult类是生成的帮助程序类。
PS:路由和代码流程确实有效,只是当我重定向到“主页索引”时,身份验证未被识别,我被送回到此逻辑。
FYI:ChallengeResult类是生成的帮助程序类。
public ActionResult ExternalLogin()
{
// Request a redirect to the external login provider
return new ChallengeResult("Google", Url.Action("ExternalLoginCallback", "GoogleAuth"));
}
[Route("ExternalLoginCallback")]
public async Task<ActionResult> ExternalLoginCallback()
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
var externalIdentity = await HttpContext.GetOwinContext().Authentication.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
var emailClaim = externalIdentity.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email);
var email = emailClaim.Value;
if (loginInfo != null && (email.Contains("@mydomain.com") || email.Contains("@mydomain.ca")))
{
//AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
//AuthenticationManager.SignIn(externalIdentity);
//AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, externalIdentity);
AuthenticationManager.User = new ClaimsPrincipal(externalIdentity);
return RedirectToAction("Index", "Home");
}
else
{
return new HttpUnauthorizedResult();
}
}
private IAuthenticationManager AuthenticationManager
{
get
{
return HttpContext.GetOwinContext().Authentication;
}
}
在主页控制器中:
[Authorize]
public ActionResult Index()
{
return View();
}
return RedirectToAction("Index", "Home");
时,它似乎仍然认为未经授权并将我带回到public ActionResult ExternalLogin()
。 - LostBalloon