Authentication 如何更改Microsoft身份验证提供程序登录的默认回调?

Authentication 如何更改Microsoft身份验证提供程序登录的默认回调?,authentication,asp.net-core,login,asp.net-identity,microsoft-account,Authentication,Asp.net Core,Login,Asp.net Identity,Microsoft Account,在我的ASP.Net核心应用程序中,我实现了Microsoft外部登录。现在,我希望覆盖默认登录回调,文档中列出的默认登录回调为https://localhost:5001/signin-microsoft,当然是在本地主机和该端口上运行的。然后,上的说明说明回调重写如下:https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback 我对回调应该在哪里实现感到有点困惑。目前,我在一个基本控制器类中实现了Extern

在我的ASP.Net核心应用程序中,我实现了Microsoft外部登录。现在,我希望覆盖默认登录回调,文档中列出的默认登录回调为
https://localhost:5001/signin-microsoft
,当然是在本地主机和该端口上运行的。然后,上的说明说明回调重写如下:
https://contoso.azurewebsites.net/.auth/login/microsoftaccount/callback

我对回调应该在哪里实现感到有点困惑。目前,我在一个基本控制器类中实现了
ExternalLoginCallback()
回调方法。但是从上面的例子来看,它看起来不应该是控制器的一部分

回调应该在
Startup.cs
、控制器或我目前不知道的其他文件中吗

然后,此处的说明说明回调重写类似于以下内容:

这与Azure应用程序服务中的应用程序相关。你是否在Azure应用程序服务中托管你的应用程序

如果是:

如果您启用应用程序服务的
身份验证和授权
功能,则表示您正在Azure中使用。该功能将接管应用程序的身份验证和授权,这意味着即使删除应用程序中的外部Azure AD身份验证代码,身份验证和授权仍然有效。然后你可以:

  • 使用应用程序服务的
    身份验证和授权
    功能,删除与Microsoft帐户身份验证中间件相关的Owin代码

  • 禁用应用程序服务的身份验证和授权功能,使用(Microsoft.AspNetCore.Authentication.MicrosoftAccount软件包)

  • 如果否:

    那么您应该遵循以下文档:。您可以通过以下方式配置回调url:

    microsoftOptions.CallbackPath = "/home/about";
    
    但是,如果您使用ASP.NET身份模板与Microsoft帐户外部登录。Microsoft身份验证后,asp.net将检查数据库中是否存在用户身份。由于ASP.NET Core 2.1及更高版本将ASP.NET Core标识作为Razor类库提供。如果要在身份验证后将用户重定向到另一个页面,可以:

  • ASP.NET核心项目中的脚手架标识:

  • 之后,在
    区域.Identity.Pages.Account.Login.cshtml.cs
    中修改重定向url:

    public IActionResult OnPost(string provider, string returnUrl = null)
    {
        returnUrl = "/home/contact";
        // Request a redirect to the external login provider.
        var redirectUrl = Url.Page("./ExternalLogin", pageHandler: "Callback", values: new { returnUrl });
        var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
        return new ChallengeResult(provider, properties);
    }
    

  • 你显然是微软身份空间中的神。干杯