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”)
。