From ec7dfb73ace61a1aba5156cc1048cbe32ee1cee6 Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Mon, 21 Oct 2019 20:47:31 +0800 Subject: ... --- Timeline/Services/JwtVerifyException.cs | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Timeline/Services/JwtVerifyException.cs (limited to 'Timeline/Services/JwtVerifyException.cs') diff --git a/Timeline/Services/JwtVerifyException.cs b/Timeline/Services/JwtVerifyException.cs new file mode 100644 index 00000000..a915b51a --- /dev/null +++ b/Timeline/Services/JwtVerifyException.cs @@ -0,0 +1,59 @@ +using Microsoft.IdentityModel.Tokens; +using System; +using System.Globalization; +using static Timeline.Resources.Services.Exception; + +namespace Timeline.Services +{ + [Serializable] + public class JwtVerifyException : Exception + { + public static class ErrorCodes + { + // Codes in -1000 ~ -1999 usually means the user provides a token that is not created by this server. + + public const int Others = -1001; + public const int NoIdClaim = -1002; + public const int IdClaimBadFormat = -1003; + public const int NoVersionClaim = -1004; + public const int VersionClaimBadFormat = -1005; + + /// + /// Corresponds to . + /// + public const int Expired = -2001; + public const int OldVersion = -2002; + } + + public JwtVerifyException() : base(GetErrorMessage(0)) { } + public JwtVerifyException(string message) : base(message) { } + public JwtVerifyException(string message, Exception inner) : base(message, inner) { } + + public JwtVerifyException(int code) : base(GetErrorMessage(code)) { ErrorCode = code; } + public JwtVerifyException(string message, int code) : base(message) { ErrorCode = code; } + public JwtVerifyException(Exception inner, int code) : base(GetErrorMessage(code), inner) { ErrorCode = code; } + public JwtVerifyException(string message, Exception inner, int code) : base(message, inner) { ErrorCode = code; } + protected JwtVerifyException( + System.Runtime.Serialization.SerializationInfo info, + System.Runtime.Serialization.StreamingContext context) : base(info, context) { } + + public int ErrorCode { get; set; } + + private static string GetErrorMessage(int errorCode) + { + var reason = errorCode switch + { + ErrorCodes.Others => JwtVerifyExceptionOthers, + ErrorCodes.NoIdClaim => JwtVerifyExceptionNoIdClaim, + ErrorCodes.IdClaimBadFormat => JwtVerifyExceptionIdClaimBadFormat, + ErrorCodes.NoVersionClaim => JwtVerifyExceptionNoVersionClaim, + ErrorCodes.VersionClaimBadFormat => JwtVerifyExceptionVersionClaimBadFormat, + ErrorCodes.Expired => JwtVerifyExceptionExpired, + ErrorCodes.OldVersion => JwtVerifyExceptionOldVersion, + _ => JwtVerifyExceptionUnknown + }; + + return string.Format(CultureInfo.InvariantCulture, Resources.Services.Exception.JwtVerifyException, reason); + } + } +} -- cgit v1.2.3