谷歌身份验证OWIN ASP.NET

3
我有以下代码,用于检查使用Google验证用户。 我尝试了3种方法(2个signin()和设置用户属性)。 signin似乎没有做任何事情(用户属性根本没有改变),即使是设置用户属性的方法,它似乎也不记得更改,我最终陷入无限重定向循环中,我无法弄清原因。
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
请查看以下解决方案https://dev59.com/xWAg5IYBdhLWcg3wbqZ4#23685160 - Rama Subba Reddy M
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接