示例#1
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            var context = new Context(tenantId: 0);

            if (!context.Publish)
            {
                filterContext.Result = new RedirectResult(Locations.BadRequest(context: context));
            }
        }
示例#2
0
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            var context = new Context(
                sessionStatus: false,
                sessionData: false);

            if (context.Controller != "errors" && Parameters.SyntaxErrors?.Any() == true)
            {
                filterContext.Result = new RedirectResult(
                    Locations.ParameterSyntaxError(context: context));
            }
            if (context.Authenticated &&
                !context.ContractSettings.AllowedIpAddress(context.UserHostAddress))
            {
                Authentications.SignOut();
                filterContext.Result = new RedirectResult(
                    Locations.BadRequest(context: context));
                return;
            }
            if (context.Authenticated &&
                context.ContractSettings.OverDeadline(context: context))
            {
                Authentications.SignOut();
                filterContext.Result = new RedirectResult(
                    Locations.Login(context: context) + "?expired=1");
                return;
            }
            if (!context.LoginId.IsNullOrEmpty())
            {
                if (!context.Authenticated)
                {
                    if (Authentications.Windows())
                    {
                        filterContext.Result = new EmptyResult();
                        return;
                    }
                    else
                    {
                        Authentications.SignOut();
                        filterContext.Result = new RedirectResult(
                            Locations.Login(context: context));
                        return;
                    }
                }
            }
            SiteInfo.Reflesh(context: context);
        }
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     if (Parameters.Security.RequestLimit > 0)
     {
         var userHostAddress          = HttpContext.Current?.Request?.UserHostAddress;
         var currentExecutionFilePath = HttpContext.Current?.Request?.CurrentExecutionFilePath;
         var errorUrl = Locations.BadRequest();
         if (userHostAddress != null && currentExecutionFilePath != errorUrl)
         {
             var thisMinute = DateTime.Now.ToString("t");
             if (!Defenses.RequestVolume.ContainsKey(userHostAddress))
             {
                 try
                 {
                     Defenses.RequestVolume.Add(
                         userHostAddress, new TwoData <string, int>(thisMinute, 0));
                     Defenses.RequestVolume.RemoveAll((k, v) => v.Data1 != thisMinute);
                 }
                 catch (Exception)
                 {
                 }
             }
             if (Defenses.RequestVolume[userHostAddress].Data1 == thisMinute)
             {
                 Defenses.RequestVolume[userHostAddress].Data2++;
                 if (Defenses.RequestVolume[userHostAddress].Data2 >
                     Parameters.Security.RequestLimit)
                 {
                     filterContext.Result = new RedirectResult(errorUrl);
                     base.OnActionExecuting(filterContext);
                 }
             }
             else
             {
                 Defenses.RequestVolume[userHostAddress].Data1 = thisMinute;
                 Defenses.RequestVolume[userHostAddress].Data2 = 1;
             }
         }
     }
 }