2017-05-08 109 views
1

如何在IdSrv4中爲ClientStore實施緩存?我已經檢查文檔在AddClientStoreCache ,但它並不能幫助我...... 在我ConfigureServices方法我正在配置IdSrv如下:如何在IdentityServer4上實現緩存?

services.AddIdentityServer(options => 
       { 
        options.IssuerUri = "http://idp.address.jus.br/"; 
        options.Caching.ClientStoreExpiration = TimeSpan.FromHours(1); 
       }) 
       .AddSigningCredential(cert) 
       .AddClientStoreCache<ClientStore>(); 

......而在我的ClientStore執行我沒有任何關於緩存...我應該檢查是否有信息在緩存中FindClientByIdAsync以某種方式?或者它在發動機罩下完成了嗎?

我只在IdentityServer4.Postgresql發現了一個樣本,但我不能sucess複製它在我的自定義商店類...

+0

緩存是什麼意思?將'clients','access_tokens'保存在數據庫中? – moritzg

+0

IdrSrv有用於緩存ClientStore和ResourceStore的選項,但有任何示例... –

回答

3

如果你正在尋找的CachingClientStore.cs你可以檢查的樣本實現超出默認實現(身份服務器執行此操作的方式)here

public async Task<Client> FindClientByIdAsync(string clientId) 
{ 
    var client = await _cache.GetAsync(clientId, 
    _options.Caching.ClientStoreExpiration, 
    () => _inner.FindClientByIdAsync(clientId), 
    _logger); 

    return client; 
} 

他們給你選擇如何實現你的緩存算法。您可以將ClientStore緩存在內存數據庫(如Redis)中。 IdentityServer4的好處是你可以實現你想要的接口,但是你需要它們。