繁体   English   中英

ASP.NET核心Web API和Angular Client中的外部身份验证

[英]External authentication in ASP.NET core Web API and Angular Client

我有一个使用asp.net核心Web API的角度应用程序。 我需要为google和facebook登录添加外部身份验证,以便我的网站和移动应用程序可以使用此网络API验证用户身份。 我已经通过提供这种类似的文件和教程了这一个也是这个 ,但他们都不帮我,因为我的web应用程序是对角5。

我的实际问题是如何获取将我重定向到Google或Facebook登录页面的网址。

大多数都使用scafolded Asp.net mvc应用程序,其中有一个控制器:AccountController with Methods ExternalLogins

GET /api/Account/ExternalLogins?returnUrl=%2F&generateState=true

并且他们说响应将是这样的json:

   [{"name":"Facebook",
  "url":"/api/Account/ExternalLogin?provider=Facebook&response_type=token&client_id=self&redirect_uri=http%3A%2F%2Flocalhost%3A15359%2F&state=QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1",
  "state":"QotufgXRptkAfJvcthIOWBnGZydgVkZWsx8YrQepeDk1"}]

这个JSON正是我需要的,因为我需要这样的URL来打开facebook或谷歌登录页面。 上面的链接使用脚手架项目,并且已经编写的每个代码都适用于Asp.net Web应用程序。 但在我的情况下,我从头开始创建web api,我的Web应用程序是Angular 5.此外,如果我尝试了一个scafolded web api项目,但我找不到任何名为AccountController的控制器,也没有任何名为ExternalLogins的方法来获取JSON包含提供者名称和登录页面URL。 它看起来像是在.net核心2中改变它的方式。上面的第一个链接显示了在Asp.net核心1和Asp.net Core 2的启动类文件中包含GoogleAuthentication的两种方法。所以必须有一些东西我我失踪了。

我使用的是Asp.net核心2.我已经有了Api密钥和秘密,并添加到启动类文件中。

我希望我足够清楚。

请告诉我是否需要详细说明。

请帮忙。 谢谢。

您需要在其中一个Controller in API中创建Google身份验证挑战,并从angular应用程序重定向到该API控制器。

控制器方法

    [HttpGet("ExternalLogin")]
    public IActionResult ExternalLogin(string provider)
    {
        if (provider == null)
        {
            return null;
        }

        var properties = new AuthenticationProperties { RedirectUri = "www.mydomain.com/api/auth/callback" };
        var response = Challenge(properties, provider);
        return response;
    }

单击谷歌登录按钮时调用的组件方法

externalLogin(provider:string){
this.document.location.href = this.baseAPIUrl + 'auth/externallogin?provider='+provider;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM