从一个全新的MVC5项目开始,我连接了外部OAuth登录谷歌,Facebook Twitter,微软等.所有工作都按预期工作.
然后我添加了新的ASP.NET Session State Provider for Redis Preview Release并使其正常工作.是啊!
我很快发现尝试使用任何OAuth提供程序登录都不再正常. Google& Facebook登录按钮调用Accont控制器上的ExternalLoginCallback(字符串returnUrl)但无处可去.登录页面只是刷新.
LinkedIn,Twitter和Microsoft按钮都将用户引导到这些登录页面,但是当返回到我的应用程序时,它们返回到登录页面,并且没有用户被添加到系统中.
在web.config中注释掉自定义sessionState条目会使外部登录恢复正常.
考虑到这两个框架对我来说都是黑盒子,我不知道如何将这两个框架放在一起玩.
最佳答案 这帮我解决了确切的问题.
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();
}
会话和外部登录提供程序似乎存在问题