예제 #1
0
        public override async Task OnActionExecutingAsync(ActionExecuteContext context)
        {
            if (context.Action.IsDefined(typeof(AllowAnonymouseAttribute), false))
            {
                await Task.CompletedTask;
                return;
            }
            var failResut = GetFailResult(context.IsApiController);
            var token     = GetToken(context);

            if (string.IsNullOrEmpty(token))
            {
                context.HttpResponse = await failResut.ExecuteResultAsync();

                context.Final = true;
                return;
            }
            var(success, dic) = JwtHelper.ValidateToken(token, options.Secret);

            if (!success)
            {
                context.HttpResponse = await failResut.ExecuteResultAsync();

                context.Final = true;
                return;
            }

            context.Controller.TempData.UserName = dic["username"];
        }
예제 #2
0
        public override bool OnActionExecuting(ActionExecuteContext context)
        {
            string timestampString = context.HttpContext.Request["timestamp"];

            if (!string.IsNullOrEmpty(timestampString))
            {
                double timestamp;
                if (!double.TryParse(timestampString, out timestamp))
                {
                    return(false);
                }


                var requestDateTime = UnixTimeStampToDateTime(timestamp);

                var time = DateTime.Now.Subtract(requestDateTime);

                if (time.TotalMinutes > 0 && time.TotalMinutes < 2)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
예제 #3
0
        public override bool OnActionExecuting(ActionExecuteContext context)
        {
            context.HttpContext.Response.Headers.CacheControl = "no-cache, no-store, max-age=0";
            context.HttpContext.Response.Headers.Pragma = "no-cache";
            context.HttpContext.Response.Headers.Expires = "-1";

            return base.OnActionExecuting(context);
        }
예제 #4
0
        public override bool OnActionExecuting(ActionExecuteContext context)
        {
            context.HttpContext.Response.Headers.CacheControl = "no-cache, no-store, max-age=0";
            context.HttpContext.Response.Headers.Pragma       = "no-cache";
            context.HttpContext.Response.Headers.Expires      = "-1";


            return(base.OnActionExecuting(context));
        }
예제 #5
0
        public object ExecuteAsync(string controllerName, string actionName, IOwinContext context)
        {
            var controllerType = ApplicationAssemblyLoader.FindControllerTypeByName(controllerName);

            if (controllerType == null)
            {
                throw new NullReferenceException("Not Found Controller Name by" + controllerName);
            }

            var controller = (Controller)Activator.CreateInstance(controllerType);
            var pi         = controllerType.GetTypeInfo().GetProperty("Context", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);

            pi.SetValue(controller, context);
            var actionMethodInfo = controllerType.GetTypeInfo().GetMethod(actionName);

            if (actionMethodInfo == null)
            {
                throw new NullReferenceException("Not Found Action Name by" + actionName);
            }

            IDynamicMethodInvoker invoker = null;

            if (!actionInvokerCache.TryGetValue(actionMethodInfo, out invoker))
            {
                invoker = new DynamicMethodInvoker(actionMethodInfo);
                actionInvokerCache.TryAdd(actionMethodInfo, invoker);
            }

            var parameterInfoList = actionMethodInfo.GetParameters();

            var actionParams = parameterInfoList.ToActionParameters();

            var paramValues = ActionRuntimeParameter.GetValuesByRequest(actionParams, context.Request);

            var    filter = actionMethodInfo.GetCustomAttribute(typeof(ActionFilterAttribute), true) as ActionFilterAttribute;
            object result = null;

            if (filter != null)
            {
                ActionExecuteContext executeContext = new ActionExecuteContext(context, controllerName, actionName, invoker, parameterInfoList);

                if (filter.OnActionExecuting(executeContext))
                {
                    executeContext.Result = invoker.Invoke(controller, paramValues.ToArray());
                }

                filter.OnActionExecuted(executeContext);
                result = executeContext.Result;
            }
            else
            {
                result = invoker.Invoke(controller, paramValues.ToArray());
            }

            return(result);
        }
예제 #6
0
        public object ExecuteAsync(string controllerName,string actionName,IOwinContext context)
        {
            var controllerType = ApplicationAssemblyLoader.FindControllerTypeByName(controllerName);
            if (controllerType == null) throw new NullReferenceException("Not Found Controller Name by" + controllerName);

            var controller = (Controller)Activator.CreateInstance(controllerType);
            var pi = controllerType.GetTypeInfo().GetProperty("Context",BindingFlags.NonPublic | BindingFlags.Public  | BindingFlags.Instance | BindingFlags.Static);
            pi.SetValue(controller, context);
            var actionMethodInfo = controllerType.GetTypeInfo().GetMethod(actionName);
            if (actionMethodInfo == null) throw new NullReferenceException("Not Found Action Name by" + actionName);

            IDynamicMethodInvoker invoker = null;
            if (!actionInvokerCache.TryGetValue(actionMethodInfo, out invoker))
            {
                invoker = new DynamicMethodInvoker(actionMethodInfo);
                actionInvokerCache.TryAdd(actionMethodInfo, invoker);
            }

            var parameterInfoList = actionMethodInfo.GetParameters();

            var actionParams = parameterInfoList.ToActionParameters();

            var paramValues = ActionRuntimeParameter.GetValuesByRequest(actionParams, context.Request);

            var filter = actionMethodInfo.GetCustomAttribute(typeof(ActionFilterAttribute), true) as ActionFilterAttribute;
            object result = null;
            if (filter != null)
            {
                ActionExecuteContext executeContext = new ActionExecuteContext(context, controllerName, actionName, invoker, parameterInfoList);

                if (filter.OnActionExecuting(executeContext))
                    executeContext.Result = invoker.Invoke(controller, paramValues.ToArray());

                filter.OnActionExecuted(executeContext);
                result = executeContext.Result;
            }
            else
            {
                result = invoker.Invoke(controller, paramValues.ToArray());
            }

            return result;
        }
예제 #7
0
 public virtual Task OnActionExecutingAsync(ActionExecuteContext context)
 {
     return(Task.CompletedTask);
 }
        public object ExecuteAsync(string controllerName, string actionName, IOwinContext context)
        {
            var serviceProvider = Application.CurrentApplication.ServiceProvider;

            var controllerType = ApplicationAssemblyLoader.FindControllerTypeByName(controllerName);

            if (controllerType == null)
            {
                throw new NullReferenceException("Not Found Controller Name by" + controllerName);
            }

            var controllerFactory = (IControllerFacotry)serviceProvider.
                                    GetService(typeof(IControllerFacotry));


            var controller = controllerFactory.CreateController(controllerType, serviceProvider);

            controller.SetHttpContext(context);

            var actionMethodInfo = controllerType.GetTypeInfo().GetMethod(actionName);

            if (actionMethodInfo == null)
            {
                throw new NullReferenceException("Not Found Action Name by" + actionName);
            }

            IDynamicMethodInvoker invoker = null;

            if (!actionInvokerCache.TryGetValue(actionMethodInfo, out invoker))
            {
                invoker = new DynamicMethodInvoker(actionMethodInfo);
                actionInvokerCache.TryAdd(actionMethodInfo, invoker);
            }

            var parameterInfoList = actionMethodInfo.GetParameters();

            var actionParams = parameterInfoList.ToActionParameters();

            var paramValues = ActionRuntimeParameter.GetValuesByRequest(actionParams, context.Request);

            var    filter = actionMethodInfo.GetCustomAttribute(typeof(ActionFilterAttribute), true) as ActionFilterAttribute;
            object result = null;

            if (filter != null)
            {
                ActionExecuteContext executeContext = new ActionExecuteContext(context, controllerName, actionName, invoker, parameterInfoList);

                if (filter.OnActionExecuting(executeContext))
                {
                    executeContext.Result = invoker.Invoke(controller, paramValues.ToArray());
                }

                filter.OnActionExecuted(executeContext);
                result = executeContext.Result;
            }
            else
            {
                result = invoker.Invoke(controller, paramValues.ToArray());
            }

            return(result);
        }
		public ActionResult Branches(int id, string sortBy = BranchesOrderExtensions.SortBranchesByName, int currentPage = DefaultCurrentPage, int itemsPerPage = DefaultItemsPerPage)
		{
			if (id != SafeConvert.ToInt(Session[_companyIdSessionKey], -1))
			{
				Session[_companyIdSessionKey] = id;
				_branchesService.ClearState();
			}

			_propertyCurrentCompanyService.CurrentCompany = id;
			ViewBag.CompanyId = id;
			ViewBag.LendingPage = _userAccessHelper.GetLandingPage();
			var branchesController = BuildController(id);
			const string partialBranchesView = "Controls/Branches";
			var partialView = new ActionExecuteContext<AppraisalCompanyBranchesViewModel>
													{
														ExecuteResult = viewModel => PartialView(partialBranchesView, viewModel)
													};
			var view = new ActionExecuteContext<AppraisalCompanyBranchesViewModel>
									{
										ExecuteResult = viewModel => GetBranchesView(viewModel)
									};
			PopulateCompanyName(id);
			ModelState.Clear();
			return branchesController.Branches(partialView, view, sortBy, currentPage, itemsPerPage);
		}
예제 #10
0
		public ActionResult Branches(string sortBy = BranchesOrderExtensions.SortBranchesByName, int currentPage = DefaultCurrentPage, int itemsPerPage = DefaultItemsPerPage)
		{
			var branchesController = BuildController();

			const string partialBranchesView = "Controls/Branches";
			var partialView = new ActionExecuteContext<AppraisalCompanyBranchesViewModel>
													{
														ExecuteResult = viewModel => PartialView(partialBranchesView, viewModel)
													};
			var view = new ActionExecuteContext<AppraisalCompanyBranchesViewModel>
									{
										ExecuteResult = viewModel => GetBranchesView(viewModel)
									};
			return branchesController.Branches(partialView, view, sortBy, currentPage, itemsPerPage);
		}
예제 #11
0
 public override Task OnActionExecutedAsync(ActionExecuteContext context)
 {
     logger.LogInformation("test1 ed");
     return(Task.CompletedTask);
 }
예제 #12
0
 private string GetToken(ActionExecuteContext context)
 {
     context.HttpRequest.Cookies.TryGetValue("authorization", out string token);
     return(token);
 }
예제 #13
0
        public override async Task <HttpResponse> Invoke(HttpRequest httpRequest)
        {
            try
            {
                var context = new ActionExecuteContext
                {
                    HttpRequest = httpRequest
                };

                var(controller, methodInfo, parameter) = route.Route(httpRequest);
                if (controller == null)
                {
                    return(await HttpResponseHelper.CreateNotFoundResponseAsync());
                }

                context.Controller = controller;
                context.Action     = methodInfo;
                ((ControllerBase)controller).Request = httpRequest;

                var filterList = GetFilters(controller, methodInfo);
                var stack      = new Stack <IFilter>();
                for (var i = 0; i < filterList.Count; i++)
                {
                    var filter = filterList[i];
                    await filter.OnActionExecutingAsync(context);

                    if (context.Final)
                    {
                        return(context.HttpResponse);
                    }
                    stack.Push(filter);
                }

                await controller.OnActionExecutingAsync(context);

                if (context.Final)
                {
                    return(context.HttpResponse);
                }

                var parameters = new List <object>();
                if (parameter != null)
                {
                    parameters.Add(parameter);
                }

                if (methodInfo.ReturnType.IsGenericType) //Task<IActionResult>
                {
                    var actionResult = await(methodInfo.Invoke(controller, parameters.ToArray()) as Task <IActionResult>);
                    context.HttpResponse = await actionResult.ExecuteResultAsync();
                }
                else
                {
                    var actionResult = methodInfo.Invoke(controller, parameters.ToArray()) as IActionResult;
                    context.HttpResponse = await actionResult.ExecuteResultAsync();
                }

                context.HttpResponse.Cookies.AddRange(controller.ResponseCookie);

                await controller.OnActionExecutedAsync(context);

                if (context.Final)
                {
                    return(context.HttpResponse);
                }

                while (stack.Count != 0)
                {
                    var filter = stack.Pop();
                    await filter.OnActionExecutedAsync(context);

                    if (context.Final)
                    {
                        return(context.HttpResponse);
                    }
                }
                return(context.HttpResponse);
            }
            catch (Exception e)
            {
                return(await HttpResponseHelper.CreateDefaultErrorResponseAsync(e));
            }
        }