Удалить заявку на роль из токена на основе даты - PullRequest
0 голосов
/ 01 мая 2019

Я расширил IdentityUserRole, чтобы добавить дату окончания срока действия, и могу добавить дату окончания срока действия к роли пользователя.Теперь мне нужно условно добавить утверждения к токену, основываясь на дате истечения срока действия роли пользователя.

В идеале при вызове GenerateClaimsAsync (), как указано ниже, он будет возвращать только утверждения о роли для этого пользователя, срок действия которых не истек или у которых нетсрок действия установлен.

Я попытался переопределить UserManager.GetUserRoles (), но не могу сделать это из-за того, что не могу найти точку, в которой Identity Server получает роли.

    public override async Task<ClaimsPrincipal> CreateAsync(ScholarRxUser user)
{
    if (user == null)
        throw new ArgumentNullException(nameof(user));

    _logger.LogDebug($"Creating user token for {user.Id}");

    var entry = _context.Entry(user);
    var profiles = entry.Collection(u => u.UserProfiles);
        if(!profiles.IsLoaded)
            await profiles.LoadAsync();

    var userId = user.Id;
    var userName = user.UserName;

    // this is were I get the roles and I need it to only return non expired roles
    var identity = await GenerateClaimsAsync(user);

В идеале все роли с истекшим сроком действияне будет добавлен в качестве утверждений, поэтому пользователь потеряет доступ к расположениям на основе ролей в момент истечения срока действия.

...