public string Encode(JwtToken token) { // 基于(提供给客户端的)基础信息编码 string header = EncodingExt.ToBase64Url(SerializeExt.ToJson(token.Header)); string payload = EncodingExt.ToBase64Url(SerializeExt.ToJson(token.Payload)); // 生成签名 string signature = EncodingExt.ToBase64Url(ComputeHash(header, payload, token.Salt)); return($"{header}.{payload}.{signature}"); }
/// <summary> /// 处理请求 /// </summary> private Response Handle(string serviceName, string methodName, string httpType) { // 缓存请求头 _httpHeaders = new Dictionary <string, string> { { "Authorization", Request.GetHeader("Authorization") ?? "" } }; #if DEBUG _log.Debug(Request.Url); #endif Type interfaceType; var service = Ioc.ResolveAppService(serviceName, out interfaceType); if (service == null) { return("Invalid Service"); } var methodInfo = interfaceType.GetMethod(methodName, BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.Public); try { // 校验 CheckRequest(methodInfo, httpType); // 若校验通过,则更新Token,防止重复请求 UpdateToken(); var res = InvokeMethod(methodInfo, service); #if DEBUG _log.Debug(">>" + SerializeExt.ToJson(res, false)); #endif return(Response.AsJson(ApiResponse.SuccessResponse(res))); } catch (BusinessException ex) { _log.Info(ex, "业务异常"); return(Response.AsJson(ApiResponse.FailResponse(ex.Message))); } catch (AuthException ex) { _log.Warning(ex, "身份验证异常"); return(Response.AsJson(ApiResponse.FailResponse(ex.Message), HttpStatusCode.Unauthorized)); } catch (Exception ex) { _log.Error(ex, "请求发生异常"); return(Response.AsJson(ApiResponse.FailResponse("系统异常"), HttpStatusCode.InternalServerError)); } }