JWT 到期时间访问令牌设置为一小时 .net 核心

时间:2021-04-27 09:18:22

标签: .net-core jwt access-token

我将 JWT 令牌持续时间设置为 13 小时。但是当我解码生成的令牌时,我看到 exp 参数设置为 1 小时。在下面的屏幕截图中,我确定了一个用于过期的代码块。是什么导致了这种情况。

.NET CORE 版本:2.1

var getMusteriInformation = _GlobalServices.GetMusteriSunucuMapInformation(MusteriInfo.Data.Id).Result;
                bool serverInfo = getMusteriInformation.IsSuccessfull && getMusteriInformation.Data != null;
                if (serverInfo && getMusteriInformation.Data.Sunucular != null)
                {
                    Claims.Add(new Claim("SAdres", CryptoHelper.Encrypt(getMusteriInformation.Data.Sunucular.Ad)));
                }

                Claims.Add(new Claim("Smmm", ApiPaketlerResponseInfo.Data.Cari != null ? ApiPaketlerResponseInfo.Data.Cari.IsSmm.Value.ToString() : "false"));
                Claims.Add(new Claim("Kullanici_Id", KullaniciInfo.Id));
                Claims.Add(new Claim("DisplayName", KullaniciInfo.DisplayName ?? KullaniciInfo.Adi.ToUpperRemoveTurkishChar() + " " + KullaniciInfo.Soyadi.ToUpperRemoveTurkishChar()));
                Claims.Add(new Claim("TokenID", KullaniciInfo.TokenID.ToString()));
                Claims.Add(new Claim("Adi", Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(KullaniciInfo.Adi.ToUpperRemoveTurkishChar()))));
                Claims.Add(new Claim("Soyadi", Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(KullaniciInfo.Soyadi.ToUpperRemoveTurkishChar()))));
                Claims.Add(new Claim("UserName", KullaniciInfo.KullaniciAdi));
                Claims.Add(new Claim("YetkiDuzeyi", yetkiSeviyesi.ToString()));
                Claims.Add(new Claim("Roller", JsonConvert.SerializeObject(roles)));
                Claims.Add(new Claim("PaketId", KullaniciInfo.PaketSeriNo.ToString()));
                Claims.Add(new Claim("TimeStamp", DateTime.UtcNow.ToString("yyyyMMddHHmmss")));
                Claims.Add(new Claim("IsAnaKullanici", value: KullaniciInfo.IsAnaKullanici != null ? KullaniciInfo.IsAnaKullanici.Value.ToString() : "false"));

                var eDefterYetki = await _EDefterYetkiRepo.FirstOrDefaultAsync(t => t.Kullanici_Id == KullaniciInfo.Id);

                if (KullaniciInfo.PaketSeriNo != 0)
                {
                    Claims.Add(new Claim("EPaketNo", CryptoHelper.Encrypt(KullaniciInfo.PaketSeriNo.ToString())));
                }
                else
                {
                    Claims.Add(new Claim("EPaketNo", CryptoHelper.Encrypt(MusteriInfo.Data.Kodu)));
                }

                Claims.Add(new Claim("ETokenID", CryptoHelper.Encrypt(KullaniciInfo.TokenID.ToString())));

                var symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Startup.Configuration["Jwt:Key"]));
                var signingCredentials = new SigningCredentials(symmetricSecurityKey, SecurityAlgorithms.HmacSha256);

                var jwtSecurityToken = new JwtSecurityToken
                (
                    claims: Claims,
                    issuer: Startup.Configuration["Jwt:Issuer"],
                    expires: DateTime.UtcNow.AddHours(13),
                    signingCredentials: signingCredentials
                );

                Claims.Add(new Claim("app_token", new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken)));
                Claims.Add(new Claim("app_token_expiration", jwtSecurityToken.ValidTo.ToString()));

                context.IssuedClaims = Claims;
            }
            else
            {
                context.IssuedClaims = Claims;
            }

Token解码exp如下; enter image description here

0 个答案:

没有答案