首先需要添加引用
install-package JWT (3.0.1支持 .net framework 3.5,3.0.2需要.net 4.6.2)。
public void AddSecret()
{
double exp = (DateTime.UtcNow.AddSeconds(10) - new DateTime(1970, 1, 1)).TotalSeconds;//10秒过期
var payload = new Dictionary<string, object>
{
{"UserID",123},
{"UserName","admin"},
{ "exp",exp}//过期时间的key必须叫exp
};
string secret = "123456789";//不能泄露的key
IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
IJsonSerializer serialer = new JsonNetSerializer();
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtEncoder encoder = new JwtEncoder(algorithm, serialer, urlEncoder);
string token = encoder.Encode(payload, secret);
textBox1.Text = token;
}
public void SubSecret(string token)
{
//string token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJVc2VySUQiOjEyMywiVXNlck5hbWUiOiJhZG1pbiJ9.OR0lZOfbQr7D2wnY_m44tX9DOoNmDWV-6X53_ZZGJAs";
var secret = "123456789"; //不能泄露的key
try
{
IJsonSerializer serializer = new JsonNetSerializer();
IDateTimeProvider provider = new UtcDateTimeProvider();
IJwtValidator validator = new JwtValidator(serializer, provider);
IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);
var json = decoder.Decode(token, secret, verify: true);
}
catch (TokenExpiredException)
{
MessageBox.Show("Token has expired");
}
catch (SignatureVerificationException)
{
MessageBox.Show("签名验证失败,数据可能被篡改");
}
}