[英]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.