ASP.NET Core 2.1社交身份验证

时间:2018-11-28 22:42:25

标签: entity-framework google-oauth facebook-authentication

我有一个.net core 2.1应用程序,其中有一个标准的电子邮件/密码身份验证模式,还允许用户使用Google / Facebook登录/注册。

我也在使用EntityFramework ...

我具有用于启动两个社交帐户的挑战的工作流,并且可以使用任何一个帐户登录。这是Startup.cs中ConfigureServices方法的摘录。

用户使用其社交帐户登录后,我想向身份添加一些其他信息

.AddFacebook(facebookOptions =>
        {
            facebookOptions.AppId = Configuration["AppSettings:FacebookSettings:AppId"];
            facebookOptions.AppSecret = Configuration["AppSettings:FacebookSettings:AppSecret"];

            //return the following fields
            facebookOptions.Fields.Add("first_name");
            facebookOptions.Fields.Add("last_name");
            facebookOptions.Fields.Add("email");
            facebookOptions.SaveTokens = true;
            facebookOptions.Events.OnTicketReceived = context =>
            {
                AddApplicationClaims(context);
                return Task.CompletedTask;
            };
        })
        .AddGoogle(googleOptions =>
        {
            googleOptions.ClientId = Configuration["AppSettings:GoogleSettings:ClientID"];
            googleOptions.ClientSecret = Configuration["AppSettings:GoogleSettings:ClientSecret"];
            googleOptions.SaveTokens = true;

            googleOptions.Events.OnTicketReceived = context =>
            {
                AddApplicationClaims(context);
                return Task.CompletedTask;
            };
        });

在OnTicketReceived事件中,添加声明信息的方法是我想要的位置: 1.查看经过社交身份验证的用户的电子邮件地址是否在我们的系统中(如果他们已注册)...无论哪种方式,我都希望能够检查数据库(EF)并添加新记录或检索现有记录和对身份的一些索偿信息。

我只是想知道是否可以从ConfigureServices方法中访问EF数据库...我很难找到可以说的任何东西...

并且如果无法访问那里的数据库...是否有更好的地方可以在进行社交身份验证后捕获用户流,以便可以对数据库进行检查?

谢谢。

J.S。

0 个答案:

没有答案