gpt4 book ai didi

c# - 外部身份验证不重定向到外部站点

转载 作者:可可西里 更新时间:2023-11-01 09:06:18 27 4
gpt4 key购买 nike

这里发生了一件奇怪的事情。

我已经建立了一个 ASP.NET MVC5 网站,并通过 ASP.NET Identity 使本地帐户正常工作。

我现在正在尝试启用外部身份验证,但发生了一些奇怪的事情。

我确信我遵循了正确的步骤。我的 Startup.Auth.cs 中有这个:

    public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
// Use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

// Uncomment the following lines to enable logging in with third party login providers
//app.UseMicrosoftAccountAuthentication(
// clientId: "",
// clientSecret: "");

//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");

//app.UseFacebookAuthentication(
// appId: "",
// appSecret: "");

app.UseGoogleAuthentication();
}

当用户点击链接以使用 Google 登录时,将调用 ExternalLogin 方法:

    [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
// Request a redirect to the external login provider
return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
}

我通过调试验证进入ChallengeResult类的ExecuteResult方法:

        public override void ExecuteResult(ControllerContext context)
{
var properties = new AuthenticationProperties() { RedirectUri = RedirectUri };
if (UserId != null)
{
properties.Dictionary[XsrfKey] = UserId;
}
context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider);
}

但是,在浏览器中,没有任何反应。我只是得到一个空白页面,我希望重定向到 Google 登录页面。

根本没有报告任何错误。

另一件有趣的事情是,我试图创建另一个 MVC5 应用程序,但我在 VS2013 中收到“未设置对象实例的对象引用”弹出窗口,并且生成的项目缺少通常存在的帐户 Controller 默认情况下。

我修复了VS2013的安装,我重新安装了Update 1,我也更新了解决方案中的所有Nuget包。

我已经想不出下一步该去哪里了。

更新 1考虑到这可能与我的PC有关,我已经将网站部署到Azure,但问题仍然存在。这是否意味着它可能与缺少的程序集有关,并且没有正确报告?我已经运行了 fusionlog,但没有看到任何绑定(bind)失败。

启动一个全新安装 Windows 8 和 VS2013 的新虚拟机,看看我是否可以在那里运行一个新项目。

更新 2好的,刚刚运行了另一轮“网络”捕获,当用户选择外部提供者时,它确实发布到 ExternalLogin 操作,但响应是 401 Unauthorized。可能是什么原因造成的?

最佳答案

好的,

我弄清楚了问题的(重要部分)是什么。

首先,我仍然不知道为什么当我创建一个 MVC 项目时,我没有得到脚手架的 AccountController 类。

但是,我的问题似乎是我的登录按钮传递的是“google”而不是“Google”作为提供者。

认真的!?我有点惊讶,大小写对提供者的名称很重要,但就是这样。

关于c# - 外部身份验证不重定向到外部站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23030552/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com