コード例 #1
0
        public void OnCacheAuthorizationReturnsIgnoreRequestIfUserIsUnauthorized()
        {
            // Arrange
            Mock <AuthorizeAttributeHelper> mockHelper = new Mock <AuthorizeAttributeHelper>()
            {
                CallBase = true
            };

            mockHelper
            .Setup(h => h.PublicAuthorizeCore(It.IsAny <HttpContextBase>()))
            .Returns(false);
            AuthorizeAttributeHelper helper = mockHelper.Object;

            Mock <HttpContextBase> mockHttpContext = new Mock <HttpContextBase>();

            mockHttpContext.Setup(c => c.User).Returns(new Mock <IPrincipal>().Object);

            // Act
            HttpValidationStatus validationStatus = helper.PublicOnCacheAuthorization(
                mockHttpContext.Object
                );

            // Assert
            Assert.Equal(HttpValidationStatus.IgnoreThisRequest, validationStatus);
        }
コード例 #2
0
        public static void ValidateCachedOutput(HttpContext context, object data, ref HttpValidationStatus validationStatus)
        {
            var status = context.Request.QueryString["status"];

            if (!string.IsNullOrWhiteSpace(status))
            {
                switch (status)
                {
                    case "valid":
                        validationStatus = HttpValidationStatus.Valid;
                        break;
                    case "invalid":
                        validationStatus = HttpValidationStatus.Invalid;
                        break;
                    case "ignore":
                        validationStatus = HttpValidationStatus.IgnoreThisRequest;
                        break;
                    default:
                        throw new ArgumentException("status");
                }
            }
            else
            {
                validationStatus = HttpValidationStatus.Valid;
            }
        }
コード例 #3
0
 private static void ValidateCacheItem(HttpContext context, object data, ref HttpValidationStatus status)
 {
     if (context.Kentico().Preview().Enabled)
     {
         status = HttpValidationStatus.IgnoreThisRequest;
     }
 }
コード例 #4
0
 private static void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     if (((context.Request.Headers["Range"] != null) || context.Request.RequestType.Equals("(GETSOURCE)")) || context.Request.RequestType.Equals("(HEADSOURCE)"))
     {
         validationStatus = HttpValidationStatus.IgnoreThisRequest;
     }
 }
コード例 #5
0
 /// <summary>
 /// Cached result is not used to ensure campaign cookies in case of presence of UTM campaign in the query string.
 /// </summary>
 private void CheckUTMParams(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     if (!string.IsNullOrEmpty(context.Request.QueryString[UTM_CAMPAIGN_PARAMETER_NAME]))
     {
         validationStatus = HttpValidationStatus.IgnoreThisRequest;
     }
 }
コード例 #6
0
		public virtual void Validate(HttpContext context, Object data, ref HttpValidationStatus status)
		{
			if (domainShouldBeCached)
				status = HttpValidationStatus.Valid;
			else
				status = HttpValidationStatus.IgnoreThisRequest;
		}
コード例 #7
0
        public void CheckCachedItem(HttpContext ctx, object data,
            ref HttpValidationStatus status) {

            status = data.ToString() == ctx.Request.UserAgent ?
                HttpValidationStatus.Valid : HttpValidationStatus.Invalid;
            Debug.WriteLine("Cache Status: " + status);
        }
コード例 #8
0
        /// <summary>
        /// Checks if the output cache is still valid.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="data">The data, which is an instance of <see cref="State"/>.</param>
        /// <param name="validationStatus">The validation status.</param>
        public static void ValidateOutputCache(HttpContext context, object data, ref HttpValidationStatus validationStatus)
        {
            HttpContextWrapper httpContext = new HttpContextWrapper(context);

            KeepUserLoggedOn(httpContext);
            var state = (State)data;

            if (UseOutputCache(context.User, httpContext, state.Config.HttpCacheExpiration))
            {
                var currentVersion = DataFactoryCache.Version;

                if ((state.VersionInCache == currentVersion) && (state.RefreshAfter > DateTime.Now))
                {
                    // Valid version with remaining time before refresh
                    return;
                }

                if (Interlocked.Exchange(ref state.VersionRendering, currentVersion) == currentVersion)
                {
                    // Someone else have already received "IgnoreThisRequest" from this method for this state object.
                    // This time, serve a cached (though stale) response again.
                    return;
                }
                // This cache needs to be updated, and this request is the first one to ask for it.
            }
            validationStatus = HttpValidationStatus.IgnoreThisRequest;
        }
コード例 #9
0
ファイル: CacheManager.cs プロジェクト: xychb/n2cms
 public virtual void ValidateCacheRequest(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     if (context.User != null && context.User.Identity.IsAuthenticated)
     {
         validationStatus = HttpValidationStatus.IgnoreThisRequest;
     }
 }
コード例 #10
0
 private static void ValidateCacheItem(HttpContext context, object data, ref HttpValidationStatus status)
 {
     if (context.Kentico().Preview().Enabled)
     {
         status = HttpValidationStatus.IgnoreThisRequest;
     }
 }
 public void CheckCachedItem(HttpContext ctx, object data, ref HttpValidationStatus status)
 {
     status = data.ToString() == ctx.Request.UserAgent
         ? HttpValidationStatus.Valid
         : HttpValidationStatus.Invalid;
     Debug.WriteLine("Cache Status: " + status);
 }
コード例 #12
0
 private static ResponseContext ValidationError(HttpValidationStatus httpValidationStatus) =>
 new ResponseContext
 {
     BreakPipeline = true,
     StatusCode    = HttpStatusCode.BadRequest,
     ContentType   = "application/json",
     Body          = JsonConvert.SerializeObject(httpValidationStatus, JsonSettings.Value)
 };
コード例 #13
0
 private void CacheValidateHandler(
     HttpContext context,
     object data,
     ref HttpValidationStatus validationStatus
     )
 {
     validationStatus = OnCacheAuthorization(new HttpContextWrapper(context));
 }
コード例 #14
0
        private static void CacheValidationCallback(HttpContext context, object data, ref  HttpValidationStatus status)
        {
            if (!string.IsNullOrEmpty(context.Request.QueryString["ignore"]))
            {
                status = HttpValidationStatus.IgnoreThisRequest;

            }
        }
コード例 #15
0
 /// <summary>
 /// Filter method for detecting anonymous users.
 /// </summary>
 /// <param name="httpContext">The HTTP context.</param>
 /// <param name="data">The data.</param>
 /// <param name="status">The status.</param>
 public void OnlyIfAnonymous(HttpContext httpContext, 
     object data, ref HttpValidationStatus status)
 {
     if (httpContext.User.Identity.IsAuthenticated)
         status = HttpValidationStatus.IgnoreThisRequest;
     else
         status = HttpValidationStatus.Valid;
 }
コード例 #16
0
 private static void ShouldBypassCacheValidator(
     HttpContext context, object data,
     ref HttpValidationStatus validationstatus)
 {
     validationstatus = ShouldAuthenticate(context)
         ? HttpValidationStatus.IgnoreThisRequest // Bypass cache => authenticate
         : HttpValidationStatus.Valid;
 }
コード例 #17
0
        public void CanValidateRequestWithRequiredQueryParameter()
        {
            var spec = TestData.Petstore.Get("/pets").ConfiugureParameter("tags", x => x.Required = true);
            var ctx  = RouteContextBuilder.FromUrl("/pets?tags=test").WithSpec(spec).Build();

            var actual   = Sut.Validate(ctx);
            var expected = HttpValidationStatus.Success();

            Assert.Equal(expected, actual);
        }
コード例 #18
0
ファイル: validate.cs プロジェクト: yashbajra/samples
 public void CacheValidate1(HttpContext context, Object data, ref HttpValidationStatus status)
 {
     if (context.Request.QueryString["Valid"] == "false")
     {
         status = HttpValidationStatus.Invalid;
     }
     else
     {
         status = HttpValidationStatus.Valid;
     }
 }
 private void IgnoreUnAuthenticated(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     if (context.User.Identity.IsAuthenticated)
     {
         validationStatus = HttpValidationStatus.Valid;
     }
     else
     {
         validationStatus = HttpValidationStatus.IgnoreThisRequest;
     }
 }
コード例 #20
0
        public void CanValidateRequestWithBody()
        {
            var body = "{\"name\": \"name\", \"tag\": \"tag\"}";
            var spec = TestData.Petstore.Post("/pets");
            var ctx  = RouteContextBuilder.FromUrl("/pets").WithBody(body).WithSpec(spec).Build();

            var actual   = Sut.Validate(ctx);
            var expected = HttpValidationStatus.Success();

            Assert.Equal(expected, actual);
        }
コード例 #21
0
 public virtual void Validate(HttpContext context, Object data, ref HttpValidationStatus status)
 {
     if (domainShouldBeCached)
     {
         status = HttpValidationStatus.Valid;
     }
     else
     {
         status = HttpValidationStatus.IgnoreThisRequest;
     }
 }
 private void IgnoreUnAuthenticated(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     if (context.User.Identity.IsAuthenticated)
     {
         validationStatus = HttpValidationStatus.Valid;
     }
     else
     {
         validationStatus = HttpValidationStatus.IgnoreThisRequest;
     }
 }
コード例 #23
0
ファイル: index.aspx.cs プロジェクト: Benguan/Code
 public static void ValidateCacheOutput(HttpContext context, Object data, ref HttpValidationStatus status)
 {
     if (context.Request.QueryString["id"] != null && context.Request.QueryString["id"].ToString() == "2")
     {
         status = HttpValidationStatus.IgnoreThisRequest;
     }
     else
     {
         status = HttpValidationStatus.Valid;
     }
 }
コード例 #24
0
 static void SetAnonymousCaching(HttpContext context, Object data, ref HttpValidationStatus status)
 {
     if (context.User.Identity.IsAuthenticated)
     {
         status = HttpValidationStatus.IgnoreThisRequest;
     }
     else
     {
         status = HttpValidationStatus.Valid;
     }
 }
コード例 #25
0
 void CacheValidationCallback(HttpContext context, object state, ref HttpValidationStatus result)
 {
     if (((DateTime)state) == this.startupTime)
     {
         result = HttpValidationStatus.Valid;
     }
     else
     {
         result = HttpValidationStatus.Invalid;
     }
 }
コード例 #26
0
 /// <summary>
 /// Filter method for detecting anonymous users.
 /// </summary>
 /// <param name="httpContext">The HTTP context.</param>
 /// <param name="data">The data.</param>
 /// <param name="status">The status.</param>
 public void OnlyIfAnonymous(HttpContext httpContext,
                             object data, ref HttpValidationStatus status)
 {
     if (httpContext.User.Identity.IsAuthenticated)
     {
         status = HttpValidationStatus.IgnoreThisRequest;
     }
     else
     {
         status = HttpValidationStatus.Valid;
     }
 }
コード例 #27
0
        public void CanValidateRequest()
        {
            var ctx = RouteContextBuilder
                      .FromUrl("/pets")
                      .WithSpec(TestData.Petstore.Get("/pets"))
                      .Build();


            var actual   = Sut.Validate(ctx);
            var expected = HttpValidationStatus.Success();

            Assert.Equal(expected, actual);
        }
コード例 #28
0
    public static void ValidateCache(HttpContext context, Object data,
                                     ref HttpValidationStatus status)
    {
        HttpCookie cookie = context.Request.Cookies["admin"];

        if (cookie != null)
        {
            status = HttpValidationStatus.Invalid;
        }
        else
        {
            status = HttpValidationStatus.Valid;
        }
    }
コード例 #29
0
        public void Validate(HttpContext context, Object data, ref HttpValidationStatus status)
        {
            //   var request = HttpContext.Current.Request;
            var request = context.Request;

            if (request.QueryString["JJ"] == null)
            {
                status = HttpValidationStatus.Invalid;
            }
            else if (request.QueryString["JJ"] == "" || request.QueryString["JJ"] == "0")
            {
                status = HttpValidationStatus.IgnoreThisRequest;
            }
            else
            {
                status = HttpValidationStatus.Valid;
            }
        }
コード例 #30
0
        public void OnAuthorization_should_return_cache_validation_status_as_valid()
        {
            var httpContext = new Mock <HttpContextBase>();

            var requestContext    = new RequestContext(httpContext.Object, new RouteData());
            var controllerContext = new ControllerContext(requestContext, new Mock <ControllerBase>().Object);
            var filterContext     = new AuthorizationContext(controllerContext, new Mock <ActionDescriptor>().Object);

            HttpValidationStatus cacheValidation = HttpValidationStatus.IgnoreThisRequest;

            httpContext.Setup(c => c.Response.Cache.AddValidationCallback(It.IsAny <HttpCacheValidateHandler>(), It.IsAny <object>())).Callback((HttpCacheValidateHandler handler, object data) => handler(null, data, ref cacheValidation));

            var attribute = new ExtendedAuthorizeAttributeTestDouble(true);

            attribute.OnAuthorization(filterContext);

            Assert.Equal(HttpValidationStatus.Valid, cacheValidation);
        }
        public static void ValidateOutputCache(HttpContext context, object data, ref HttpValidationStatus validationStatus)
        {
            var httpContextBase = new HttpContextWrapper(context);
            var state           = data as ValidationState;

            if (state.UsesPersonalizationOrQuery || context.Cache[context.Request.RawUrl] == null)
            {
                validationStatus = HttpValidationStatus.Invalid;
            }
            else if (!OutputCacheHandler.UseOutputCache(context.User, httpContextBase, state.Settings.HttpCacheExpiration))
            {
                validationStatus = HttpValidationStatus.IgnoreThisRequest;
            }
            else
            {
                validationStatus = HttpValidationStatus.Valid;
            }
        }
コード例 #32
0
        // CacheAuthorizationHandler is only attached to the CachePolicy after first time success authorization

        /// <summary>
        /// When output is cached, the OnAuthorization will be skipped
        /// </summary>
        /// <param name="context">The context</param>
        /// <param name="data">The data</param>
        /// <param name="validationStatus">The validation status</param>
        private void CacheAuthorizationHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
        {
            //  when output is cached, the cachePolicy will trigger the CacheValidateHandler to authorize user

            if (data == null)
            {
                throw new ArgumentNullException(nameof(data), "data should be AuthorizationContext");
            }

            AuthorizationContext filterContext = (AuthorizationContext)data;

            if (filterContext == null)
            {
                throw new InvalidCastException("data should be AuthorizationContext");
            }

            AuthorizeResultEnum authorizeResult = AuthorizeUser(filterContext);

            // HttpValidationStatus.Valid => return cache data
            validationStatus = authorizeResult == AuthorizeResultEnum.Success ? HttpValidationStatus.Valid : HttpValidationStatus.IgnoreThisRequest;
        }
コード例 #33
0
        /// <summary>
        /// Cache validator routine.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="data"></param>
        /// <param name="status"></param>
        public void Validate(HttpContext context, Object data, ref HttpValidationStatus status)
        {
            // get flag
            Hashtable cacheFlags = ApplicationAdapter.GetCacheFlags();

            bool isValid = true;

            if (cacheFlags.ContainsKey(_forum.ForumID))
            {
                isValid = (bool)cacheFlags[_forum.ForumID];
            }

            if (isValid)
            {
                status = HttpValidationStatus.Valid;
            }
            else
            {
                status = HttpValidationStatus.Invalid;
            }
        }
コード例 #34
0
        public void OnCacheAuthorizationReturnsValidIfUserIsAuthorized()
        {
            // Arrange
            Mock <AuthorizeAttributeHelper> mockHelper = new Mock <AuthorizeAttributeHelper>()
            {
                CallBase = true
            };

            mockHelper.Expect(h => h.PublicAuthorizeCore(It.IsAny <HttpContextBase>())).Returns(true);
            AuthorizeAttributeHelper helper = mockHelper.Object;

            Mock <HttpContextBase> mockHttpContext = new Mock <HttpContextBase>();

            mockHttpContext.Expect(c => c.User).Returns(new Mock <IPrincipal>().Object);

            // Act
            HttpValidationStatus validationStatus = helper.PublicOnCacheAuthorization(mockHttpContext.Object);

            // Assert
            Assert.AreEqual(HttpValidationStatus.Valid, validationStatus);
        }
コード例 #35
0
 private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     validationStatus = OnCacheAuthorization((AuthorizationContext)data);
 }
コード例 #36
0
 private void CacheValidateHandler(HttpContext context, [NotNull] object data, ref HttpValidationStatus validationStatus)
 {
     validationStatus = OnCacheAuthorization((AuthorizationContext)data);
 }
コード例 #37
0
 private void CheckCachedItem(HttpContext context, object data, ref HttpValidationStatus validationStatus) {
     validationStatus = data.ToString() == context.Request.UserAgent
         ? HttpValidationStatus.Valid
         : HttpValidationStatus.Invalid;
     Debug.WriteLine("Cache Status: " + validationStatus);
 }
コード例 #38
0
        private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
        {
            IFunction function = data as IFunction;

            validationStatus = OnCacheAuthorization(new HttpContextWrapper(context), function);
        }
コード例 #39
0
ファイル: Rssforum.aspx.cs プロジェクト: priaonehaha/HnD
        /// <summary>
        /// Cache validator routine.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="data"></param>
        /// <param name="status"></param>
        public void Validate(HttpContext context, Object data, ref HttpValidationStatus status)
        {
            // get flag
            Hashtable cacheFlags = ApplicationAdapter.GetCacheFlags();

            bool isValid = true;
            if(cacheFlags.ContainsKey(_forum.ForumID))
            {
                isValid = (bool)cacheFlags[_forum.ForumID];
            }

            if(isValid)
            {
                status = HttpValidationStatus.Valid;
            }
            else
            {
                status = HttpValidationStatus.Invalid;
            }
        }
コード例 #40
0
ファイル: HelpPageInvoker.cs プロジェクト: pusp/o2platform
 void CacheValidationCallback(HttpContext context, object state, ref HttpValidationStatus result)
 {
     if (((DateTime)state) == this.startupTime)
     {
         result = HttpValidationStatus.Valid;
     }
     else
     {
         result = HttpValidationStatus.Invalid;
     }
 }
コード例 #41
0
 private void HttpCacheValidateHandler1(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
 }
コード例 #42
0
 private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     validationStatus = HttpValidationStatus.Valid;
     if (!this.AuthorizeCore(new HttpContextWrapper(context)))
     {
         validationStatus = HttpValidationStatus.IgnoreThisRequest;
     }
 }
コード例 #43
0
        /*

        public void ReWritePath(HttpContext context, string filepath) {

            if (!File.Exists(filepath)) {

                CmsFile f = CmsHttpContext.Current.CmsFile;
                if (f != null) {
                    if (f is CmsPage) { //TODO: Extend for all file types
                        CmsPage p = (CmsPage)f;
                        context.RewritePath(ResolveTemplate(p.Template.Url), false);
                    }

                }
            }

        }

        public void PreventCachingInAuthoringMode(HttpContext context) {
            if (context.User.Identity.IsAuthenticated) {
                context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            }
        }

        public string ResolveTemplate(string url) {
            if (url.StartsWith("/")) {
                url = url.Replace(CmsContext.Current.Site.RootDirectory.FullPath, "~");
            }
            return url;
        }

        */
        /// <summary>
        /// This method supports the Xenosynth CMS Module and is not intended to be used directly from your code. 
        /// </summary>
        /// <param name="context">
        /// A <see cref="HttpContext"/>
        /// </param>
        /// <param name="data">
        /// A <see cref="Object"/>
        /// </param>
        /// <param name="status">
        /// A <see cref="HttpValidationStatus"/>
        /// </param>
        public void Validate(HttpContext context, Object data, ref HttpValidationStatus status)
        {
            if (context.User != null && context.User.Identity.IsAuthenticated) {
                status = HttpValidationStatus.IgnoreThisRequest;
            } else {
                status = HttpValidationStatus.Valid;
            }
        }
コード例 #44
0
ファイル: AuthorizeAttribute.cs プロジェクト: guangxb/learn
 /// <summary>
 /// 缓存验证的结果
 /// </summary>
 /// <param name="context"></param>
 /// <param name="data"></param>
 /// <param name="validationStatus"></param>
 private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     validationStatus = this.OnCacheAuthorization(context, data);
 }
コード例 #45
0
		private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
		{
			validationStatus = OnCacheAuthorization(new HttpContextWrapper(context));
		}
コード例 #46
0
 public virtual void ValidateCacheRequest(HttpContext context, object data, ref HttpValidationStatus validationStatus)
 {
     if (context.User != null && context.User.Identity.IsAuthenticated)
         validationStatus = HttpValidationStatus.IgnoreThisRequest;
 }
コード例 #47
0
        private void CacheValidationHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus)
        {
            var handlerData = data as CacheValidationHandlerData;

            if (handlerData == null)
            {
                validationStatus = HttpValidationStatus.Invalid;
                return;
            }

            if (OnMethodAuthorizing(handlerData.ServiceContext, handlerData.BehaviorContext) == BehaviorMethodAction.Stop)
            {
                validationStatus = HttpValidationStatus.IgnoreThisRequest;
                return;
            }

            validationStatus = HttpValidationStatus.Valid;
        }
コード例 #48
0
ファイル: HttpCachePolicyCas.cs プロジェクト: Profit0004/mono
		private void Validate (HttpContext context, object data, ref HttpValidationStatus validationStatus)
		{
		}