ClaimTypes.NameIdentifier всегда возвращает null в Blazor WebAssembly ASP. NET Core Hosted - PullRequest
1 голос
/ 09 июля 2020

Я установил приложение Blazor WebAssembly ASP.NET Core hosted и интегрировал систему аутентификации, а также пользовательский AuthenticationProvider в клиент. В проекте на стороне сервера я вызываю в контроллере следующее:

[HttpGet]
public async Task<ActionResult> GetObjects()
{
   var id = User.FindFirstValue(ClaimTypes.NameIdentifier); // <-- returns always null
}

, а переменная id всегда возвращает значение null.

Пользователь из таблицы aspnetcoreuser (идентификатор aspnetcore) В данных таблицы, поскольку я использую SQLite, я вижу, что идентификатор не равен нулю, и пользователи были успешно добавлены в таблицу aspnetuser.

Некоторые версии SDK:

. NET Установленные Core SDK: 3.1.301. NET Установленные основные среды выполнения: Microsoft.AspNetCore.All 2.1.19 Microsoft.AspNetCore.App 2.1.19Microsoft.AspNetCore.App 3.1.5 Microsoft.NETCore.App 2.1.19 Microsoft.NETCore.App 3.1.5 Microsoft.WindowsDesktop.App 3.1.5

Также я видел некоторые решения, которые могут вызывать "windowsAuthentication": true, "anonymousAuthentication": false, из launchSettings.json, но с изменениями это не решило проблему для меня.

Кто-нибудь здесь может мне помочь?

1 Ответ

0 голосов
/ 09 июля 2020

Вам необходимо установить UserIdClaimType в серверном приложении, добавив этот код в Startup.ConfigureServices:

services.Configure<IdentityOptions>(options => 
    options.ClaimsIdentity.UserIdClaimType = ClaimTypes.NameIdentifier);

подробнее здесь

...