public async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
        {
            // validate feature is enabled
            var config = await _cache.Configuration();

            if (!config.Session_Logging_Is_Enabled)
            {
                await next();

                return;
            }

            var session = await _sessionManager.GetSession();

            int sessionLogId;

            using (var uow = _uowFactory.GetUnitOfWork())
            {
                var methoInfo = context.HandlerMethod.MethodInfo.Name;
                var method    = context.HttpContext.Request.Method;
                var dbRequest = new Repositories.DatabaseRepos.SessionRepo.Models.CreateSessionLogRequest()
                {
                    Session_Id   = session.SessionEntity.Id,
                    Page         = (string)context.RouteData.Values["Page"],
                    Handler_Name = context.HandlerMethod.Name,
                    Method       = method,
                    Controller   = (string)context.RouteData.Values["Controller"],
                    Action       = (string)context.RouteData.Values["Action"],
                    IsAJAX       = !(methoInfo == "OnGet" || methoInfo == "OnPost"),
                    Url          = context.HttpContext.Request.GetDisplayUrl(),
                    Created_By   = ApplicationConstants.SystemUserId
                };

                if (method == "POST" || !string.IsNullOrEmpty(context.HandlerMethod.Name))
                {
                    var postData = new Dictionary <string, object>();

                    var hasHandlerArguments = context.HandlerArguments.Any();
                    if (hasHandlerArguments)
                    {
                        postData.Add("Handler_Arguments", context.HandlerArguments);
                    }

                    var formData    = context.HandlerInstance.GetType().GetProperty("FormData");
                    var hasFormData = formData != null;
                    if (hasFormData)
                    {
                        // todo: FormData always gets added on ajax posts :/ figure out how to filter it out
                        postData.Add("Form_Data", ((dynamic)context.HandlerInstance).FormData);
                    }

                    if (hasHandlerArguments || hasFormData)
                    {
                        var jsonString = JsonConvert.SerializeObject(postData, Formatting.Indented).Trim();
                        dbRequest.Action_Data_JSON = JsonHelper.ObfuscateFieldValues(jsonString, ApplicationConstants.ObfuscatedActionArgumentFields);
                    }
                }

                sessionLogId = await uow.SessionRepo.CreateSessionLog(dbRequest);

                uow.Commit();

                // required for session event logging
                await _sessionProvider.Set(SessionConstants.SessionLogId, sessionLogId);
            }

            // do something before the action executes
            var resultContext = await next();

            // do something after the action executes; resultContext.Result will be set

            if (resultContext.Exception != null && !resultContext.ExceptionHandled)
            {
                await _sessionManager.WriteSessionLogEvent(new Models.ManagerModels.Session.CreateSessionLogEventRequest()
                {
                    EventKey = SessionEventKeys.Error,
                    Info     = new Dictionary <string, string>()
                    {
                        { "Message", resultContext.Exception.Message }
                    }
                });
            }
        }
Esempio n. 2
0
 public void OnPageHandlerExecuting(PageHandlerExecutingContext pageContext)
 {
     int a = 0;
 }
 private static void AfterOnPageHandlerExecutingImpl(DiagnosticListener diagnosticListener, PageHandlerExecutingContext handlerExecutingContext, IPageFilter filter)
 {
     if (diagnosticListener.IsEnabled(Diagnostics.AfterPageFilterOnPageHandlerExecutingEventData.EventName))
     {
         diagnosticListener.Write(
             Diagnostics.AfterPageFilterOnPageHandlerExecutingEventData.EventName,
             new AfterPageFilterOnPageHandlerExecutingEventData(
                 handlerExecutingContext.ActionDescriptor,
                 handlerExecutingContext,
                 filter
                 ));
     }
 }
Esempio n. 4
0
 public void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     //throw new NotImplementedException();
 }
Esempio n. 5
0
 public Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next) => next();
Esempio n. 6
0
 public Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
 {
     return(next());
 }
Esempio n. 7
0
 public void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     requestTime = DateTime.Now;
 }
Esempio n. 8
0
 public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     base.OnPageHandlerExecuting(context);
 }
 public void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     //_logger.LogDebug("Global sync PageHandlerExecutingContext called.");
 }
Esempio n. 10
0
 public override void OnPageHandlerExecuting(
     PageHandlerExecutingContext context)
 {
     context.HttpContext.Response.Headers.Add("test", new string[] { "123" });
 }
Esempio n. 11
0
 public override Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
 {
     return(base.OnPageHandlerExecutionAsync(context, next));
 }
Esempio n. 12
0
 public void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     _timer = new Stopwatch();
     _timer.Start();
 }
Esempio n. 13
0
 public async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
 {
     await OnActionExecutionAsync(context);
     await next();
 }
Esempio n. 14
0
 public Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
 {
     return(_aspNetCoreUnitOfWorkHandler.OnExceptionPageHandlerExecutionAsync(context, next));
 }
Esempio n. 15
0
 public void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     var log = "executing";
 }
 private bool ShouldSaveAudit(PageHandlerExecutingContext actionContext)
 {
     return(_configuration.IsAuditingEnabled &&
            _auditingHelper.ShouldSaveAudit(actionContext.HandlerMethod.MethodInfo, true));
 }
Esempio n. 17
0
 public Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
 {
     throw new NotImplementedException();
 }
Esempio n. 18
0
 public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     Keywords = "Value set in filter";
 }
Esempio n. 19
0
        private Task Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
        {
            switch (next)
            {
            case State.PageBegin:
            {
                _instance = CreateInstance();

                goto case State.PageSelectHandlerBegin;
            }

            case State.PageSelectHandlerBegin:
            {
                _cursor.Reset();

                _handler = SelectHandler();

                goto case State.PageSelectHandlerNext;
            }

            case State.PageSelectHandlerNext:

                var currentSelector = _cursor.GetNextFilter <IPageFilter, IAsyncPageFilter>();
                if (currentSelector.FilterAsync != null)
                {
                    if (_handlerSelectedContext == null)
                    {
                        _handlerSelectedContext = new PageHandlerSelectedContext(_pageContext, _filters, _instance)
                        {
                            HandlerMethod = _handler,
                        };
                    }

                    state = currentSelector.FilterAsync;
                    goto case State.PageSelectHandlerAsyncBegin;
                }
                else if (currentSelector.Filter != null)
                {
                    if (_handlerSelectedContext == null)
                    {
                        _handlerSelectedContext = new PageHandlerSelectedContext(_pageContext, _filters, _instance)
                        {
                            HandlerMethod = _handler,
                        };
                    }

                    state = currentSelector.Filter;
                    goto case State.PageSelectHandlerSync;
                }
                else
                {
                    goto case State.PageSelectHandlerEnd;
                }

            case State.PageSelectHandlerAsyncBegin:
            {
                Debug.Assert(state != null);
                Debug.Assert(_handlerSelectedContext != null);

                var filter = (IAsyncPageFilter)state;
                var handlerSelectedContext = _handlerSelectedContext;

                _diagnosticSource.BeforeOnPageHandlerSelection(handlerSelectedContext, filter);
                _logger.BeforeExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IAsyncPageFilter.OnPageHandlerSelectionAsync),
                    filter);

                var task = filter.OnPageHandlerSelectionAsync(handlerSelectedContext);
                if (task.Status != TaskStatus.RanToCompletion)
                {
                    next = State.PageSelectHandlerAsyncEnd;
                    return(task);
                }

                goto case State.PageSelectHandlerAsyncEnd;
            }

            case State.PageSelectHandlerAsyncEnd:
            {
                Debug.Assert(state != null);
                Debug.Assert(_handlerSelectedContext != null);

                var filter = (IAsyncPageFilter)state;

                _diagnosticSource.AfterOnPageHandlerSelection(_handlerSelectedContext, filter);
                _logger.AfterExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IAsyncPageFilter.OnPageHandlerSelectionAsync),
                    filter);

                goto case State.PageSelectHandlerNext;
            }

            case State.PageSelectHandlerSync:
            {
                Debug.Assert(state != null);
                Debug.Assert(_handlerSelectedContext != null);

                var filter = (IPageFilter)state;
                var handlerSelectedContext = _handlerSelectedContext;

                _diagnosticSource.BeforeOnPageHandlerSelected(handlerSelectedContext, filter);
                _logger.BeforeExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IPageFilter.OnPageHandlerSelected),
                    filter);

                filter.OnPageHandlerSelected(handlerSelectedContext);

                _diagnosticSource.AfterOnPageHandlerSelected(handlerSelectedContext, filter);

                goto case State.PageSelectHandlerNext;
            }

            case State.PageSelectHandlerEnd:
            {
                if (_handlerSelectedContext != null)
                {
                    _handler = _handlerSelectedContext.HandlerMethod;
                }

                _arguments = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase);

                _cursor.Reset();

                var task = BindArgumentsAsync();
                if (task.Status != TaskStatus.RanToCompletion)
                {
                    next = State.PageNext;
                    return(task);
                }

                goto case State.PageNext;
            }

            case State.PageNext:
            {
                var current = _cursor.GetNextFilter <IPageFilter, IAsyncPageFilter>();
                if (current.FilterAsync != null)
                {
                    if (_handlerExecutingContext == null)
                    {
                        _handlerExecutingContext = new PageHandlerExecutingContext(_pageContext, _filters, _handler, _arguments, _instance);
                    }

                    state = current.FilterAsync;
                    goto case State.PageAsyncBegin;
                }
                else if (current.Filter != null)
                {
                    if (_handlerExecutingContext == null)
                    {
                        _handlerExecutingContext = new PageHandlerExecutingContext(_pageContext, _filters, _handler, _arguments, _instance);
                    }

                    state = current.Filter;
                    goto case State.PageSyncBegin;
                }
                else
                {
                    goto case State.PageInside;
                }
            }

            case State.PageAsyncBegin:
            {
                Debug.Assert(state != null);
                Debug.Assert(_handlerExecutingContext != null);

                var filter = (IAsyncPageFilter)state;
                var handlerExecutingContext = _handlerExecutingContext;

                _diagnosticSource.BeforeOnPageHandlerExecution(handlerExecutingContext, filter);
                _logger.BeforeExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IAsyncPageFilter.OnPageHandlerExecutionAsync),
                    filter);

                var task = filter.OnPageHandlerExecutionAsync(handlerExecutingContext, InvokeNextPageFilterAwaitedAsync);
                if (task.Status != TaskStatus.RanToCompletion)
                {
                    next = State.PageAsyncEnd;
                    return(task);
                }

                goto case State.PageAsyncEnd;
            }

            case State.PageAsyncEnd:
            {
                Debug.Assert(state != null);
                Debug.Assert(_handlerExecutingContext != null);

                var filter = (IAsyncPageFilter)state;

                if (_handlerExecutedContext == null)
                {
                    // If we get here then the filter didn't call 'next' indicating a short circuit.
                    _logger.PageFilterShortCircuited(filter);

                    _handlerExecutedContext = new PageHandlerExecutedContext(
                        _pageContext,
                        _filters,
                        _handler,
                        _instance)
                    {
                        Canceled = true,
                        Result   = _handlerExecutingContext.Result,
                    };
                }

                _diagnosticSource.AfterOnPageHandlerExecution(_handlerExecutedContext, filter);
                _logger.AfterExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IAsyncPageFilter.OnPageHandlerExecutionAsync),
                    filter);

                goto case State.PageEnd;
            }

            case State.PageSyncBegin:
            {
                Debug.Assert(state != null);
                Debug.Assert(_handlerExecutingContext != null);

                var filter = (IPageFilter)state;
                var handlerExecutingContext = _handlerExecutingContext;

                _diagnosticSource.BeforeOnPageHandlerExecuting(handlerExecutingContext, filter);
                _logger.BeforeExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IPageFilter.OnPageHandlerExecuting),
                    filter);

                filter.OnPageHandlerExecuting(handlerExecutingContext);

                _diagnosticSource.AfterOnPageHandlerExecuting(handlerExecutingContext, filter);
                _logger.AfterExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IPageFilter.OnPageHandlerExecuting),
                    filter);

                if (handlerExecutingContext.Result != null)
                {
                    // Short-circuited by setting a result.
                    _logger.PageFilterShortCircuited(filter);

                    _handlerExecutedContext = new PageHandlerExecutedContext(
                        _pageContext,
                        _filters,
                        _handler,
                        _instance)
                    {
                        Canceled = true,
                        Result   = _handlerExecutingContext.Result,
                    };

                    goto case State.PageEnd;
                }

                var task = InvokeNextPageFilterAsync();
                if (task.Status != TaskStatus.RanToCompletion)
                {
                    next = State.PageSyncEnd;
                    return(task);
                }

                goto case State.PageSyncEnd;
            }

            case State.PageSyncEnd:
            {
                Debug.Assert(state != null);
                Debug.Assert(_handlerExecutingContext != null);
                Debug.Assert(_handlerExecutedContext != null);

                var filter = (IPageFilter)state;
                var handlerExecutedContext = _handlerExecutedContext;

                _diagnosticSource.BeforeOnPageHandlerExecuted(handlerExecutedContext, filter);
                _logger.BeforeExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IPageFilter.OnPageHandlerExecuted),
                    filter);

                filter.OnPageHandlerExecuted(handlerExecutedContext);

                _diagnosticSource.AfterOnPageHandlerExecuted(handlerExecutedContext, filter);
                _logger.AfterExecutingMethodOnFilter(
                    PageLoggerExtensions.PageFilter,
                    nameof(IPageFilter.OnPageHandlerExecuted),
                    filter);

                goto case State.PageEnd;
            }

            case State.PageInside:
            {
                var task = InvokeHandlerMethodAsync();
                if (task.Status != TaskStatus.RanToCompletion)
                {
                    next = State.PageEnd;
                    return(task);
                }

                goto case State.PageEnd;
            }

            case State.PageEnd:
            {
                if (scope == Scope.Page)
                {
                    if (_handlerExecutedContext == null)
                    {
                        _handlerExecutedContext = new PageHandlerExecutedContext(_pageContext, _filters, _handler, _instance)
                        {
                            Result = _result,
                        };
                    }

                    isCompleted = true;
                    return(Task.CompletedTask);
                }

                var handlerExecutedContext = _handlerExecutedContext;
                Rethrow(handlerExecutedContext);

                if (handlerExecutedContext != null)
                {
                    _result = handlerExecutedContext.Result;
                }

                isCompleted = true;
                return(Task.CompletedTask);
            }

            default:
                throw new InvalidOperationException();
            }
        }
Esempio n. 20
0
 public async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
 {
     await next.Invoke();
 }
Esempio n. 21
0
        public override async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
        {
            ExternalLogins = (await SignInManager.GetExternalAuthenticationSchemesAsync()).ToList();

            await next();
        }
 public void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     // Called before the handler method executes after model binding is complete.
 }
 public void OnPageHandlerExecuting(PageHandlerExecutingContext ctx)
 {
     // Your logic here.
 }
Esempio n. 24
0
 public async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context,
                                               PageHandlerExecutionDelegate next)
 {
     _logger.LogDebug("全局过滤器方法:OnPageHandlerExecutionAsync ,被调用 【WY02】");
     await next.Invoke();
 }
 public async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
 {
     context.HttpContext.Response.Headers.Add(header, value);
     await next().ConfigureAwait(false);
 }
Esempio n. 26
0
 public void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
 }
 private static void BeforeOnPageHandlerExecutionImpl(DiagnosticListener diagnosticListener, PageHandlerExecutingContext handlerExecutionContext, IAsyncPageFilter filter)
 {
     if (diagnosticListener.IsEnabled(Diagnostics.BeforePageFilterOnPageHandlerExecutionEventData.EventName))
     {
         diagnosticListener.Write(
             Diagnostics.BeforePageFilterOnPageHandlerExecutionEventData.EventName,
             new BeforePageFilterOnPageHandlerExecutionEventData(
                 handlerExecutionContext.ActionDescriptor,
                 handlerExecutionContext,
                 filter
                 ));
     }
 }
Esempio n. 28
0
 public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     context.HandlerArguments["message"] = "Hello from OnPageHandlerExecuting";
 }
 public void OnPageHandlerExecuting(PageHandlerExecutingContext context)
 {
     _logger.LogDebug("Global Filter OnPageHandlerExecuting called.");
 }
Esempio n. 30
0
        /// <summary>
        /// 验证权限得方法
        /// </summary>
        /// <param name="serviceProvider"></param>
        /// <param name="context"></param>
        /// <param name="next"></param>
        /// <returns></returns>
        public virtual async Task ValidatePermissionAsync(IServiceProvider serviceProvider, PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
        {
            bool canAccessResource = false;
            bool isAjax            = false;

            isAjax = IsAjax(context);
            CustomerResourceAttribute attributeCodes = context.HandlerMethod.MethodInfo
                                                       .GetCustomAttributes(typeof(CustomerResourceAttribute), false)
                                                       .OfType <CustomerResourceAttribute>()
                                                       .FirstOrDefault();
            bool isIgnore = context.Filters.OfType <IgnoreAuthAttribute>().Any();
            IEnumerable <string> resourceCodes = attributeCodes?.ResourceCodes.ToList() ?? new List <string>()
            {
                "*"
            };                                                                                                       //当前方法的资源Code

            //Console.WriteLine("isAjax:{0}, isIgnore:{1}", isAjax, isIgnore);
            System.Diagnostics.Debug.WriteLine("isAjax:{0}, isIgnore: {1}", isAjax, isIgnore);
            if (isIgnore || (resourceCodes.Any(_ => "*".Equals(_) && isAjax)))
            {
                await next();
            }
            else
            {
                string url = string.Join(string.Empty, context.RouteData.Values.Values.Reverse());
                if (!url.StartsWith("/"))
                {
                    url = string.Concat("/", url); // /Admin/AdminUserInfo/Index
                }
                System.Diagnostics.Debug.WriteLine("url:{0}", url);
                canAccessResource = await serviceProvider.GetService <SysPermissionService>().HasPermissionAsync(resourceCodes, url, isAjax);// await Task.FromResult(true);//TODO...

                if (canAccessResource)
                {
                    await next();
                }
                else
                {
                    string        path         = context.HttpContext.Request.Path.Value;
                    IActionResult actionResult = null;
                    if (isAjax)
                    {
                        actionResult = new OkObjectResult(new AjaxReturnModel <string>(path)
                        {
                            Msg = "您没有权限访问", Success = false
                        })
                        {
                            StatusCode = (int)System.Net.HttpStatusCode.Forbidden
                        };
                    }

                    context.Result = actionResult ?? new RedirectResult("/Admin/Forbidden?url=" + System.Web.HttpUtility.UrlEncode(path));
                }
            }
        }