Я новичок в IdentityServer4. Я прочитал, что мне нужно реализовать IPersistedGrantStore
для хранения токенов обновления в таблице вроде PersistedGrants
в моей базе данных.
Когда мое собственное приложение запрашивает новый токен доступа, в журналах IdentityServer отображается следующее: "refresh_token" grant with value: "{value}" not found in store
.
Это потому, что я использую версию постоянного хранилища грантов в памяти. Поэтому мне нужно сохранить токен обновления в PersistedGrant
таблице.
Поэтому в моем startup.cs я добавил следующую строку:
builder.Services.AddScoped<IPersistedGrantStore, PersistedGrantStore>();
а IPersistedGrantStore.cs -
public interface IPersistedGrantStore
{
Task StoreAsync(CustomPersistedGrant grant);
Task<CustomPersistedGrant> GetAsync(string key);
Task<IEnumerable<CustomPersistedGrant>> GetAllAsync(string subjectId);
}
Итак, у меня есть класс CustomPersistedGrant.cs
public class CustomPersistedGrant
{
public string Key { get; set; }
public string Type { get; set; }
public string SubjectId { get; set; }
public string ClientId { get; set; }
public DateTime CreationTime { get; set; }
public DateTime? Expiration { get; set; }
public string Data { get; set; }
}
и теперь мне нужно написать код для моего класса PersistedGrantStore.cs. Но возникает вопрос: как только я напишу код для класса PersistedGrantStore.cs, в котором я вызываю класс PersistedGrantStore.cs
? В Identity.Server Account/AccountController
? Я не нашел ни одного примера об этом без использования EntityFramework, потому что я не хочу использовать Entity Framework.
Спасибо.