Реализация интерфейса IPersistedGrantStore .Net 5.0 (IdentityServer4)
Всем привет. Я пытаюсь сохранить модифицировать свою программу и сохранять токен не в памяти, а в БД. Для этого я решил реализовать интерфейс IPersistedGrantStore. Я нашел старую реализацию этого интерфейса через интерфейс IPersistedGrantService(https://stackoverflow.com/a/48287103/13032771). Однако эта реализация для .Net Core 2.0. Я в свою очередь пытаюсь реализовать для .Net 5.0. Проблема в том, что интерфейс IPersistedGrantService был изменён и сейчас когда я пытаюсь реализовать методы StoreAsync, GetAsync, GetAllAsync я сталкиваюсь с проблемой, что тут нет метода Get
var persistedGrant = this.persistedGrantService.Get(key);
Есть метод GetAllGrantsAsync, но он возвращает IEnumerable(Grant), а это уже не конвертируется в модель (PersistedGrant)
var persistedGrants = this.persistedGrantService.GetAllGrantsAsync(filter.SubjectId);
Grant
public class Grant
{
public Grant();
public string SubjectId { get; set; }
public string ClientId { get; set; }
public string Description { get; set; }
public IEnumerable<string> Scopes { get; set; }
public DateTime CreationTime { get; set; }
public DateTime? Expiration { get; set; }
}
PersistedGrant
public PersistedGrant();
public string Key { get; set; }
public string Type { get; set; }
public string SubjectId { get; set; }
public string SessionId { get; set; }
public string ClientId { get; set; }
public string Description { get; set; }
public DateTime CreationTime { get; set; }
public DateTime? Expiration { get; set; }
public DateTime? ConsumedTime { get; set; }
public string Data { get; set; }
My Code
public async Task<IEnumerable<PersistedGrant>> GetAllAsync(PersistedGrantFilter filter)
{
var persistedGrants = this.persistedGrantService.GetAllGrantsAsync(filter.SubjectId);//.InList();
var model = MapPersistedEntityToPersistedGrant(persistedGrants); // here problem
//MapPersistedEntityToPersistedGrants(persistedGrants);//persistedGrants.Select(x=> MapPersistedGrant(x.));
var countedPersistedGrants = persistedGrants.Count;
logger.LogDebug($"{countedPersistedGrants} persisted grants found for {filter.SubjectId}", persistedGrants.Count, filter.SubjectId);
return Task.FromResult(model);
}