ile eksik özelliklerini ele ı bina olduğum bir proje için bir JSON Web Jetonu sınıfını yaptı:JSON Seri kaldırma: özel bir JsonConverter
[JsonObject]
public class JwtPayload
{
[JsonProperty("iss", NullValueHandling = NullValueHandling.Ignore)]
public string Issuer { get; set; } = "https://mycompany.com/myIdentityServices";
[JsonProperty("sub", NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
public string Subject { get; set; }
. . .
[JsonProperty("nbf", NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[JsonConverter(typeof(JsonUnixTimestampConverter))]
public DateTime? NotBefore { get; set; } = null;
[JsonProperty("iat", NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate)]
[JsonConverter(typeof (JsonUnixTimestampConverter))]
public DateTime? IssuedAt { get; set; }
. . .
}
Şöyle Unix Damgası dönüşüm için bir JsonConverter vardır:
Belirteç serileştirme işlemi çok hızlı gerçekleştirilir ... Tam olarak beklediğim JSON'u alırım. Sorun, bir JSON belirtecini alıp "nbf" değerinin eksik olduğu bir JsonConvert.Deserialize<JwtPayload>("my JSON")
yapmayı denediğimde, çok iyi geçmeyen bir Unix zaman damgası olarak "iat" ı ayrıştırmaya çalışırken serpantifikasyonum patlar. .
Açıkça benim JsonConverter
sınıfımda bir sorunum var, ancak çevrimiçi gördüğüm neredeyse tüm örnekler, bir sınıfa bir dize değil, bir dizeye dönüştürülmesinden bahsediyor, bu yüzden yanlış yaptığımı anlamak zor. Birisi bana yardım edebilir mi?
NullValueHandling
ve DefaultValueHandling
farklı kombinasyonlarını denedim, bu yüzden sorunun JsonConverter
sınıfında olduğunu düşünüyorum, ancak yanılıyor olabilirim.
Mükemmel kullanarak, hile yaptığını. BTW, benim anlayışım unix zaman damgası 32 bitlik bir tamsayıdır, ancak bunu uzun süredir referansladınız. Anlayışım yanlış mı? –
@JeremyHolovacs - .NET tarafında, zaman damgalarını her zaman güvenli olmak için "uzun" olarak gösteriyorum, çünkü 1) Bazen unix zaman damgası saniyeler yerine milisaniye olarak karşımıza çıkar, bunun için 'uzun' gereklidir ve 2) https://en.wikipedia.org/wiki/Year_2038_problem. – dbc