public ApiResult HandleRequest <TRequest, TResponse>(string apiActionName, TRequest request, RequestContext reqContext, Func <TRequest, IFullTrace, ApiResult <TResponse> > handler, AccessLevel defaultAccessLevel = AccessLevel.NoLimit) { ServiceSession.Current = new ServiceSession(); ServiceSession.Current.RequestContext = reqContext; using (var trace = CreateTrace(reqContext)) { trace.Method = apiActionName; trace.ApiName = this.ApiName; trace.ServiceType = this.Domain; var inspectContext = new InspectContext <TRequest> { Request = request, RequestContext = reqContext, Trace = trace, AccessLevel = defaultAccessLevel, ApiName = this.ApiName, Domain = this.Domain, }; var fullActionName = string.Format("{0}.{1}.{2}", ApiName, apiActionName, Domain); MakeupInpectContext(inspectContext, fullActionName); return(_handler.Handle(inspectContext, handler)); } }
public override void BeforeHandle <TRequest>(InspectContext <TRequest> inspectCxt) { inspectCxt.Trace.Start(); inspectCxt.Trace.LocalIp = NetWorkHelper.GetLocalIp(); inspectCxt.Trace.Parameters = JsonHelper.ToJson(inspectCxt.Request); }
public override void BeforeHandle <TRequest>(InspectContext <TRequest> inspectCxt) { string userId; if (TryGetUserId(inspectCxt, out userId)) { inspectCxt.Trace.User = userId; } }
public override void AfterHandle <TRequest>(InspectContext <TRequest> inspectCxt, ApiResult result) { inspectCxt.Trace.Result = result; inspectCxt.Trace.Stop(); var traceLevel = GetTraceLevel(inspectCxt.Trace, result.Success); var option = inspectCxt.ActionConfig == null ? ActionAccessConfig.DefaultLogOption : inspectCxt.ActionConfig.LogOption; SaveTrace(inspectCxt.Trace, traceLevel, option, inspectCxt.Domain); }
private bool TryGetUserId <TRequest>(InspectContext <TRequest> inspectCxt, out string userId) { var userRequest = inspectCxt.Request as IUserRequest; userId = null; if (userRequest != null && !string.IsNullOrWhiteSpace(userRequest.UserId)) { userId = userRequest.UserId; } return(!string.IsNullOrWhiteSpace(userId)); }
protected override ApiResult HandleImpl <TRequest>(InspectContext <TRequest> inspectCxt, Func <TRequest, IFullTrace, ApiResult> finalFunc) { string error; bool pass = CheckRequest(inspectCxt.Request, out error); inspectCxt.Trace.StepTrace.AddStep(string.Format("end check param [{0}] {1}", pass ? "passed" : "not pass", error)); if (!pass) { return(ApiResult.MakeFailedResult(error)); } return(base.HandleImpl(inspectCxt, finalFunc)); }
private void MakeupInpectContext(InspectContext context, string actionName) { context.ActionConfig = RetrieveActionConfig(actionName); if (context.Trace != null) { context.Trace.StepTrace.SerializeResult = false; if (context.ActionConfig != null) { context.Trace.StepTrace.SerializeResult = context.ActionConfig.ServiceDebug; } // todo: add core & cache handle inject later ServiceAccessBase.Trace = context.Trace; // CachedDataHelper.Trace = context.Trace; } }
public ApiResult Handle <TRequest>(InspectContext <TRequest> inspectCxt, Func <TRequest, IFullTrace, ApiResult> finalFunc) { if (Next != null) { try { return(Next.Handle(inspectCxt, finalFunc)); } catch (Exception ex) { inspectCxt.Trace.SetException(ex); return(ApiResult.MakeFailedResult(ErrorMessageCollection.SystemException)); } } return(ApiResult.MakeFailedResult(ErrorMessageCollection.SystemInnerError)); }
public override void BeforeHandle <TRequest>(InspectContext <TRequest> inspectCxt) { if (inspectCxt.RequestContext == null) { inspectCxt.RequestContext = new RequestContext(); inspectCxt.Trace.RequestContext = inspectCxt.RequestContext; } if (inspectCxt.RequestContext.Device == null) { inspectCxt.RequestContext.Device = new RequestDevice(); } if (inspectCxt.RequestContext.Channel == null) { inspectCxt.RequestContext.Channel = new RequestChannel(); } inspectCxt.RequestContext.Device.Ip = NetWorkHelper.GetClientIP(); inspectCxt.RequestContext.Channel.UserAgent = HttpContext.Current.Request.UserAgent; do { if (string.IsNullOrEmpty(inspectCxt.RequestContext.Device.DeviceType)) { inspectCxt.RequestContext.Device.DeviceType = "Andriod"; if (!string.IsNullOrEmpty(inspectCxt.RequestContext.Channel.UserAgent) && inspectCxt.RequestContext.Channel.UserAgent.IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0) { inspectCxt.RequestContext.Device.DeviceType = "IPhone"; } break; } if (inspectCxt.RequestContext.Device.DeviceType.IndexOf("ios", StringComparison.OrdinalIgnoreCase) >= 0) { inspectCxt.RequestContext.Device.DeviceType = "IPhone"; break; } } while (false); }
protected override ApiResult HandleImpl <TRequest>(InspectContext <TRequest> inspectCxt, Func <TRequest, IFullTrace, ApiResult> finalFunc) { var request = inspectCxt.Request as WithTokenRequest; if (request != null) { var algoName = SelectAlgo(request.SelectANo); var attackDefender = new ReplayAttackDefender(new AuthKeyContainer()); var raParam = new ReplayAttackParam(); string error; if (!attackDefender.Defend(raParam, algoName, out error)) { return(ApiResult.MakeFailedResult(error)); } } return(base.HandleImpl(inspectCxt, finalFunc)); }
public override void BeforeHandle <TRequest>(InspectContext <TRequest> inspectCxt) { inspectCxt.Trace.StepTrace.AddStep("begin detecting attack"); }
public override void AfterHandle <TRequest>(InspectContext <TRequest> inspectCxt, Sparticle.Result.ApiResult result) { }
public override void AfterHandle <TRequest>(InspectContext <TRequest> inspectCxt, ApiResult result) { // do nothing }
public override void BeforeHandle <TRequest>(InspectContext <TRequest> inspectCxt) { inspectCxt.Trace.StepTrace.AddStep("begin check param"); }