.net-core - JWT Expiration Time 访问令牌设置为一小时 .net 核心
问题描述
我将 JWT 令牌持续时间设置为 13 小时。但是当我解码生成的令牌时,我看到 exp 参数设置为 1 小时。在下面的屏幕截图中,有一个我已经确定过期的代码块。是什么导致了这种情况。
.NET 核心版本: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;
}
解决方案
推荐阅读
- smtp - SMTP 错误:无法连接到服务器:网络无法访问 (101) SMTP 连接失败
- javascript - 使用Break进行循环无限循环?反应式
- wcf - WCF - 在 HTTPS 情况下未使用 HTTP.SYS 正确配置证书。与 Charles 代理一起运行
- javascript - Json 解码“试图获取非对象的属性”错误
- java - 如何修复 java.lang.SecurityException:调用者缺少所需的权限 com.google.android.things.permission.USE_PERIPHERAL_IO 错误?
- php - 如果变量为空,则使用另一个值
- vue.js - 使用 vue-cli 构建深度嵌套的 html 需要很长时间
- python - 改进代码以查找素数
- c# - C# 清除定时器中的richTextBox
- vba - Office 365 受保护的视图破坏 Excel Marcos