ASP.NET Core 1.0升级到ConfigureServices中的ASP.NET Core 2.0升级身份验证 - 如何在Core 2.0中使用字段?

问题描述:

我正在使用已运行且需要从Core 1.0迁移到Core 2.0并需要在服务身份验证中使用和迁移字段的代码。如何在Core 2.0中使用字段? (我在微软审查迁移文件太多,但不能发现任何东西。)https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2xASP.NET Core 1.0升级到ConfigureServices中的ASP.NET Core 2.0升级身份验证 - 如何在Core 2.0中使用字段?

public void ConfigureServices(IServiceCollection services) 

,我遇到了下列麻烦:(怎样添加在核2.0以下)

Fields = { "email", "last_name", "first_name" }, 

下面是我的代码如下。

ASP.NET 1.0的核心

app.UseFacebookAuthentication(new FacebookOptions 
{ 
    AppId = Configuration["Authentication:Test:Facebook:AppId"], 
    AppSecret = Configuration["Authentication:Test:Facebook:AppSecret"], 
    Fields = { "email", "last_name", "first_name" }, 
}); 

需要迁移到ASP.NET核2.0

services.AddAuthentication().AddFacebook(facebookOptions => 
{ 
    facebookOptions.AppId = Configuration["Authentication:Test:Facebook:AppId"]; 
    facebookOptions.AppSecret = Configuration["Authentication:Test:Facebook:AppSecret"]; 
}); 

Fields是只读的,但可以修改其内容。以您的示例,代码级迁移可能是这样的:

services.AddAuthentication().AddFacebook(facebookOptions => 
{ 
    facebookOptions.AppId = Configuration["Authentication:Test:Facebook:AppId"]; 
    facebookOptions.AppSecret = Configuration["Authentication:Test:Facebook:AppSecret"]; 
    facebookOptions.Fields.Clear(); 
    facebookOptions.Fields.Add("email"); 
    facebookOptions.Fields.Add("last_name"); 
    facebookOptions.Fields.Add("first_name"); 
}); 

然而,这实际上不是必要的,因为这些都是set by default。从源头上看到的代码片段:

public FacebookOptions() 
{ 
    // ... 
    Fields.Add("name"); 
    Fields.Add("email"); 
    Fields.Add("first_name"); 
    Fields.Add("last_name"); 
    // ... 
} 

它看起来甚至在ASP.NET核心的previous version是没有必要的,但你的代码将工作细如你刚刚更换默认值(无name) 。如果你真的不想要求name,你可以使用facebookOptions.Fields.Remove(“name”)