You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.7 KiB
62 lines
1.7 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using JWT;
|
|
using JWT.Algorithms;
|
|
using JWT.Serializers;
|
|
using JWT.Builder;
|
|
using JWT.Exceptions;
|
|
|
|
namespace WebApplication1
|
|
{
|
|
public static class JwtHelper
|
|
{
|
|
static string secret = System.Configuration.ConfigurationManager.AppSettings["secret"].ToString();
|
|
|
|
public static string CreateTocken(string UserName)
|
|
{
|
|
|
|
var tocken=JwtBuilder.Create().WithAlgorithm(new HMACSHA256Algorithm())
|
|
.ExpirationTime(DateTime.Now.AddMinutes(10))
|
|
.WithSecret(secret)
|
|
.AddClaim("UserName",UserName)
|
|
.AddClaim("DateTime",DateTime.Now)
|
|
.WithValidationParameters(
|
|
new ValidationParameters
|
|
{
|
|
ValidateExpirationTime = true,
|
|
}).Encode(); ;
|
|
|
|
return tocken;
|
|
}
|
|
|
|
public static bool Validate(string tocken)
|
|
{
|
|
try
|
|
{
|
|
var mes = JwtBuilder.Create()
|
|
.WithAlgorithm(new HMACSHA256Algorithm())
|
|
.WithSecret(secret)
|
|
.Decode(tocken);
|
|
return true;
|
|
|
|
}
|
|
catch (TokenNotYetValidException )
|
|
{
|
|
|
|
throw new Exception("Token is not valid yet");
|
|
}
|
|
catch (TokenExpiredException)
|
|
{
|
|
throw new Exception("Token has expired");
|
|
}
|
|
catch (SignatureVerificationException)
|
|
{
|
|
throw new Exception("Token has invalid signature");
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|