我一直在尝试使用 Google 帐户在 MVC5 应用程序中使用 OWIN 实现外部登录。
如果我已经登录谷歌,点击我的应用程序中的谷歌按钮就可以了,在允许我访问登录信息后,它会将我带到我的注册页面。
如果我在单击我的应用程序 google 按钮时尚未登录 google,则会提示我按预期使用 Google 登录,但回调接收器似乎看不到我已登录,因为登录信息在此始终为空回调中的场景如下...
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
// Code omitted for brevity.
}
}
有人有解决方法或解释吗?这几乎就像在登录 google 后发出请求之前,OWIN 无法使用外部 cookie。
经过几天的调查,我终于找到了答案。问题似乎是登录谷歌后,它重定向回该网站,并且没有登录谷歌的权限,因此被重定向回登录页面。如果已经登录谷歌,不知道为什么这会起作用。找到这篇文章后我发现了这一点......
http://blog.technovert.com/2014/01/google-openid-integration-issues-asp-net-identity/ http://blog.technovert.com/2014/01/google-openid-integration-issues-asp-net-identity/
我将以下内容添加到我的配置文件中。
<location path="signin-google">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
现在它可以工作了...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)