从一个全新的MVC5项目开始,我连接了外部OAuth登录Google,Facebook Twitter,微软等。所有这些都按预期工作。
然后我添加了新的ASP.NET Session State Provider for Redis Preview Release并使其正常运行。呀!
我很快发现尝试使用任何OAuth提供程序登录都无法正常运行。 Google& Facebook登录按钮调用Accont控制器上的ExternalLoginCallback(字符串returnUrl)但无处可去。登录页面只是刷新。
LinkedIn,Twitter和Microsoft按钮都将用户引导至这些登录页面,但当返回到我的应用程序时,它们将返回登录页面,并且没有用户被添加到系统中。
在web.config中注释掉自定义sessionState条目会使外部登录恢复正常。
考虑到这两个框架对我来说都是黑盒子,我不知道如何将这两个框架放在一起玩。
答案 0 :(得分:2)
这对我提出了确切的问题。
http://www.nsilverbullet.net/2014/06/24/tough-mvc-5-owin-external-authentication-issue/
基本上是: 必须有会话状态吗?在AccountController中修改:
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
//Ensure Session has at least one value
Session["EnableExternalAuth"] = true; // <--------- This helped
ViewBag.ReturnUrl = returnUrl;
return View();
}
会话和外部登录提供商似乎存在问题