了解ConcurrentDictionary在WEB API中的工作方式

我正在嘗試實現刷新密鑰存儲庫(JWT)。目前看起來是這樣的:

 public class AuthenticateController : ControllerBase
    {
     ConcurrentDictionary<string, string> refreshTokens = new ConcurrentDictionary<string, string>();
    ....
    ....
    ....
    public async Task<IActionResult> Login()
    {
    ...
    GenerateRefreshToken()
...
    }
    public string GenerateRefreshToken(ApplicationUser user)
            {
                var randomNumber = new byte[32];
                using (var rng = RandomNumberGenerator.Create())
                {
                    rng.GetBytes(randomNumber);
                    var token = Convert.ToBase64String(randomNumber);
                    refreshTokens.AddOrUpdate(user.Id, token, (key, oldValue) => token);
                    return token;
                }
            }
 public async Task<IActionResult> RefreshToken([FromBody] RefreshModel model)
        {
            ....
            refreshTokens.TryGetValue(user.Id, out string savedRefreshToken);
            if (savedRefreshToken != model.RefreshToken)
                throw new SecurityTokenException("Invalid refresh token");
            ...      
        }

(我刪除了我認為不需要解釋的代碼)

用戶嘗試登錄,有關第一個更新密鑰的信息輸入到集合中。我放了一個斷點,你可以看到輸入的信息:

JWT密鑰過期后,前端發送更新密鑰的請求。但是集合是空的。為什么會這樣?我以前絕對不會清理這些藏品。

我認為問題可能是web api處理每個新請求時相互隔離。我該如何解決這個問題?

? 最佳回答:

控制器是暫時的,這意味著每次請求傳入時它們都會被新實例化。所以你的字典在兩次請求之間就被刪除了。

為了解決這個問題,您將字典設置為靜態的,如下所示:

private static readonly ConcurrentDictionary<string, string> refreshTokens =
    new ConcurrentDictionary<string, string>();

現在,它將在應用程序的生命周期內生存。

主站蜘蛛池模板: 97se色综合一区二区二区| 日本一区二区三区在线观看| 久久精品一区二区东京热| 色婷婷亚洲一区二区三区 | 欧美人妻一区黄a片| 久久91精品国产一区二区| a级午夜毛片免费一区二区| 国产一区二区三区小向美奈子| 91国偷自产一区二区三区| 久久一区不卡中文字幕| 人妻少妇精品一区二区三区| 色综合视频一区二区三区| 正在播放国产一区| 中文字幕日韩欧美一区二区三区| 国产91久久精品一区二区| 一区二区三区观看免费中文视频在线播放| 国产免费播放一区二区| 精品人妻一区二区三区毛片| 视频在线观看一区二区三区| 立川理惠在线播放一区| 国产精品无码一区二区三区在 | 日韩精品免费一区二区三区| 在线成人一区二区| 成人精品一区二区电影| 欧美日韩精品一区二区在线观看| 国产欧美一区二区精品仙草咪| 少妇一晚三次一区二区三区| 免费无码A片一区二三区| 国产精品日韩欧美一区二区三区| 人妻少妇精品视频三区二区一区| 精品人妻无码一区二区色欲产成人| 中文字幕精品一区影音先锋| 伊人色综合一区二区三区影院视频| 中文字幕一区二区三匹| 精品国产一区二区三区免费看| 国产一区二区在线视频播放| 国产一区二区三区在线观看精品| 国产午夜精品一区二区三区漫画| 久久无码人妻一区二区三区午夜| 无码播放一区二区三区| 日本一区二区三区在线视频|