我有一个使用 asp.net core Web API 的 angular 应用程序。我需要为 google 和 facebook 登录添加外部身份验证,以便我的 Web 和移动应用程序可以使用此 Web api 对用户进行身份验证。我已经浏览了为此提供的文档和教程,例如 this和this, 但它们都没有帮助我,因为我的Web应用程序在Angular 5上。
我的实际问题是如何获取将我重定向到 Google 或 Facebook 登录页面的 URL。
大多数情况下,它们都使用脚手架的 Asp.net mvc 应用程序,其中有一个控制器:AccountController with Methods ExternalLogins
GET /api/Account/ExternalLogins?returnUrl=%2F&generateState=true
Run Code Online (Sandbox Code Playgroud)
他们说响应将是这样的 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"}]
Run Code Online (Sandbox Code Playgroud)
这个 JSON 正是我所需要的,因为我需要一个这样的 URL 来打开 facebook 或 google 登录页面。上面的链接使用脚手架项目和已经在那里编写的所有代码,这些代码非常适合 Asp.net Web 应用程序。但就我而言,我已经从头开始使用 web api,我的 web 应用程序是 Angular 5。此外,如果我尝试了一个脚手架 web api 项目,但我找不到任何名为 AccountController 的控制器,也找不到任何名为 ExternalLogins 的方法来获取 JSON包含提供者名称和登录页面 url。看起来它的完成方式在 .net core 2 中已经改变。上面的第一个链接显示了两种方法,将 GoogleAuthentication 包含在 Asp.net core 1 和 Asp.net …
asp.net-mvc facebook google-authentication asp.net-core-webapi asp.net-core-2.0
现在我知道有很多关于这个的帖子,但我的情况有所不同.所以请耐心等待.
当我在.Net Framework上创建WebApi并选择个人用户帐户时,它已经为我提供了一个外部身份验证的工作代码.

有AccountController,Startup.auth.cs和其他具有外部身份验证代码的文件

现在我知道.net核心已经发生了变化.但个人用户帐户的net.core web api与它没有任何相似之处.
当我尝试在.net Core上使用WebApi时,它只为我提供了一个选择Azure应用程序的选项.在下图中,使用.net核心上的WebApi,蓝色指向的下拉列表仅提供一个Azure AD b2c应用程序选项.没有帐户控制器是脚手架,也没有其他配置文件用于外部身份验证.
我试过这些链接:https: //docs.microsoft.com/en-us/aspnet/web-api/overview/security/external-authentication-services
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/
但第一个链接是针对.net框架,但对我没有帮助.第二只适用于Web应用程序的asp.net核心,但不是的WebAPI
我需要在web api中进行外部身份验证,因为我希望所有来自Web或移动设备的用户都可以通过Google或Facebook进行身份验证.请任何人指出我正确的方向.我在这里错过了一些东西.有没有文件可以帮我解决这个问题?
authentication asp.net-authentication .net-core asp.net-core-webapi asp.net-core-2.0
我可以这样做
<my-awesome-component *ngIf="ConditionToIncludeComponent"></my-awesome-component>
Run Code Online (Sandbox Code Playgroud)
但是动态插入组件的每个文档都基于ViewContainerRef.我喜欢它的功能.但是什么使它在*ngif上如此特别?
只需指出两者的优点和缺点.请.谢谢!
我在服务类中创建了一个行为主题.
public personObject: BehaviorSubject<any> = new BehaviorSubject<any>({
personId: 1,
name: 'john doe'
});
Run Code Online (Sandbox Code Playgroud)
在导入此服务的组件上,我已订阅此行为主题,如下所示:
` this._subscription.add(
this._bankService.personObject.subscribe(data => {
this.personObject = data;
console.log(data);
})
);`
Run Code Online (Sandbox Code Playgroud)
但我无法在行为主题中获得准确的数据集.请帮忙.
编辑 我忘了提到我已经使用ViewContainerRef来创建我的兄弟组合.所以我添加了一个答案,对我的问题几点评论.