public void OnBefore(BeforeMethodArgs beforeMethodArgs) { IHttpContextAccessor _httpContextAccessor = InstanceFactory.GetInstance <IHttpContextAccessor>();; if (string.IsNullOrWhiteSpace(Roles)) { throw new Exception("Invalid roles"); } var roles = Roles.Split(","); bool isAuthorize = false; var roleClaims = _httpContextAccessor.HttpContext.User.ClaimRoles(); foreach (var role in roles) { if (roleClaims.Contains(role)) { isAuthorize = true; break; } } if (isAuthorize == false) { throw new SecurityException("You are not authorized"); } }
public void OnBefore(BeforeMethodArgs beforeMethodArgs) { var validator = (IValidator)Activator.CreateInstance(_validatorType); var entityType = _validatorType.BaseType.GetGenericArguments()[0]; var entities = beforeMethodArgs.Arguments.Where(_ => _.GetType() == entityType); foreach (var entity in entities) { ValidatorTool.FluentValidate(validator, entity); } }
public void OnBefore(BeforeMethodArgs beforeMethodArgs) { LogMethodParameter logMethodParameter = null; ParameterInfo[] parameterInfos = beforeMethodArgs.MethodInfo.GetParameters(); List <LogDetailParameter> logParameters = new List <LogDetailParameter>(); for (int i = 0; i < beforeMethodArgs.Arguments.Length; i++) { if (beforeMethodArgs.Arguments[i] != null) { var parameter = beforeMethodArgs.Arguments[i].GetType().BaseType.BaseType == typeof(System.Linq.Expressions.LambdaExpression) ? beforeMethodArgs.Arguments[i].ToString() : beforeMethodArgs.Arguments[i]; logParameters.Add(new LogDetailParameter { Name = parameterInfos[i].Name, Type = parameterInfos[i].ParameterType.Name, Value = parameter }); } else { logParameters.Add(new LogDetailParameter { Name = parameterInfos[i].Name, Type = parameterInfos[i].ParameterType.Name, Value = null }); } } LogDetail logDetail = new LogDetail { MethodCallDate = DateTime.Now, ClassName = beforeMethodArgs.MethodInfo.DeclaringType.FullName, MethodName = beforeMethodArgs.MethodInfo.Name, Parameters = logParameters }; logMethodParameter = new LogMethodParameter() { LogName = beforeMethodArgs.MethodInfo.Name, LogDetail = logDetail }; _logger.Log(logMethodParameter); }
private object RunOnBeforeInterception(object[] aspects, BeforeMethodArgs beforeMethodArgs) { object response = null; foreach (IInterception loopAttribute in aspects) { if (loopAttribute is IBeforeVoidInterception) { ((IBeforeVoidInterception)loopAttribute).OnBefore(beforeMethodArgs); } else if (loopAttribute is IBeforeInterception) { response = ((IBeforeInterception)loopAttribute).OnBefore(beforeMethodArgs); } } return(response); }
protected override object Invoke(MethodInfo targetMethod, object[] args) { object[] interceptions = null; InterceptionArgs interceptionArgs = null; try { interceptionArgs = CreateAspectArgs(targetMethod, args); interceptions = GetInterceptions(targetMethod); // BeforeMethodArgs çalıştırılır. Cache vb. gelen datalar result değişkenine aktarılır BeforeMethodArgs beforeMethodArgs = new BeforeMethodArgs(interceptionArgs); object result = RunOnBeforeInterception(interceptions, beforeMethodArgs); //result dolu ise ilgili methodun çalışmasına gerek yoktur if (result == null) { //result null ise ilgili method çalıştırılır. result = targetMethod.Invoke(_service, args); } //After İnterceptionlar çalıştırılır AfterMethodArgs afterMethodArgs = new AfterMethodArgs(interceptionArgs); RunOnAfterInterception(interceptions, new AfterMethodArgs(afterMethodArgs, result)); //RunOnAfterInterception(interceptions, new AfterMethodArgs(interceptionArgs, result)); return(result); } catch (Exception ex) { var exArg = new ExceptionMethodArgs(interceptionArgs, ex); RunOnExceptionInterception(interceptions, exArg); throw ex.InnerException ?? ex; //return null; } //catch (Exception ex) when (ex is TargetInvocationException) //{ // var exArg = new ExceptionMethodArgs(e,ex); // RunOnExceptionInterception(interceptions, exArg); // //throw ex.InnerException ?? ex; // return null; //} }
public object OnBefore(BeforeMethodArgs beforeMethodArgs) { string key = $"{beforeMethodArgs.MethodInfo.DeclaringType.FullName}.{beforeMethodArgs.MethodInfo.Name}"; object data = null; if (_cacheManager.IsExist(key)) { var cacheData = _cacheManager.Get <object>(key); if (cacheData == null) { _cacheManager.Remove(key); return(null); } data = JsonConvert.DeserializeObject(cacheData.ToString(), _returnType); } return(data); }
public void OnBefore(BeforeMethodArgs beforeMethodArgs) { if (string.IsNullOrWhiteSpace(Roles)) { throw new Exception("Invalid roles"); } var roles = Roles.Split(","); bool isAuthorize = false; foreach (var role in roles) { if (Thread.CurrentPrincipal.IsInRole(role)) { isAuthorize = true; break; } } if (isAuthorize == false) { throw new SecurityException("You are not authorized"); } }