Я играл с IdentityServer4. Абсолютно люблю это.Что такое ProfileService/Когда выполняется ProfileService?
Я шел через учебники на вашем сайте, в частности https://identityserver4.readthedocs.io/en/release/quickstarts/7_javascript_client.html
Я создал службу профилей, который делает следующее:
public class ProfileService : IProfileService
{
public Task GetProfileDataAsync(ProfileDataRequestContext context)
{
context.IssuedClaims.Add(new Claim("test-claim", "test-value"));
return Task.FromResult(0);
}
public Task IsActiveAsync(IsActiveContext context)
{
context.IsActive = true;
return Task.FromResult(0);
}
}
Это прекрасно работает, мой обычай претензия видна в окно журнала моего JS-клиента.
Я поставил точку останова, чтобы проверить, что находится в контексте, и я заметил, что он дважды попадал в цель. Свойства вызывающего абонента были ClaimsProviderAccessToken
и UserInfoEndpoint
соответственно. Почему это?
В моей наивности я удалил profile
сферы из моего Js клиента, и в РСИНЕ JS конфигурации также удаляется рамки профиля и установить loadUserInfo: false
пока мой ProfileService
он еще называется дважды.
Если моя конечная цель состоит в том, чтобы устанавливать претензии на основе параметров из базы данных, я действительно не хочу делать эту операцию дважды, не так ли? (Подлинный вопрос - я не знаю). «Решение» должно было только установить их на «ClaimsProviderAccessToken», но есть что-то, говорящее мне о том, что будет вызвана причина, по которой ProfileServices вызывается дважды, и что существует некоторая важность того, что она устанавливает требования на обоих проходах.
P.s. Я думаю, что есть опечатка здесь https://github.com/IdentityServer/IdentityServer4/blob/dev/docs/quickstarts/8_entity_framework.rst Должно ли это не быть «Microsoft.EntityFrameworkCore.Tools.DotNet» в разделе tools
? а не «Microsoft.EntityFrameworkCore.Tools». Мне было неуместно создавать новую проблему для чего-то такого тривиального, а не обязательно неправильно!
'Microsoft.EntityFrameworkCore.Tools.DotNet' - это только, если вы хотите, чтобы команды были доступны с помощью команды dotnet, то есть« обновление базы данных dotnet ef ». 'Microsoft.EntityFrameworkCore.Tools' доступен и доступен, но доступен только в консоли диспетчера пакетов (команды Powershell, такие как« Migration-Add »или« Database-Update », как это было в предыдущих версиях EF, например EF6). Также см. Http://github.com/aspnet/Announcements/issues/208 – Tseng