2016-03-03 91 views
3

我在我的應用程序中使用jwt令牌中間件和Asp.Net.OpenIdConnect.Server。事實上,它工作正常。但我對一件事感到困惑。如果我使用代幣,我無法立即授予新的聲明或禁止我的用戶。例如。我給我的用戶訪問權限令牌(過期2天)和刷新令牌(過期2周)。然後我給這個用戶管理員權限。但是他只會在兩天之內知道這一點,當他的當前訪問令牌到期時,auth服務器會使用刷新令牌給他新的令牌。如何在下一次請求時立即給予他新的權利?Asp。淨5. Jwt令牌撤銷

據我所知,我需要爲每個請求檢查數據庫,並在需要時向用戶提供新的訪問令牌。但是,我應該在aspnet 5中做什麼?也許有這樣的事情的一些好的做法?

回答

2

這樣做的一種方法是在您的聲明中添加一個唯一的標識符,您可以查詢它是否仍然有效。您可以使用內存緩存來存儲它或某些分佈式內存緩存,如Redis,所以您不必每次都訪問數據庫。

當您禁止用戶或添加令牌時,通過將該令牌從緩存中刪除將其標記爲無效。每次用戶刷新令牌時,都應該在令牌內創建一個新的唯一ID。