2011-02-28 2 views

답변

0

당신은 RequireSslAttribute를 의미합니까? http://aspnet.codeplex.com/SourceControl/changeset/view/63930#391756

+0

아니, 내가 RequireHttpsAttribute을 의미한다. http://msdn.microsoft.com/en-us/library/system.web.mvc.requirehttpsattribute.aspx 이름을 바꾸지 않는 한. 그것이 이름이 바뀌 었다는 것을 암시하고 있습니까? –

8

난 그냥 ASP.NET MVC 3 RTM의 소스를 다운로드하여 System.Web.Mvc 프로젝트에서 그것을 발견 :

namespace System.Web.Mvc { 
    using System; 
    using System.Diagnostics.CodeAnalysis; 
    using System.Web.Mvc.Resources; 

    [SuppressMessage("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes", Justification = "Unsealed because type contains virtual extensibility points.")] 
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] 
    public class RequireHttpsAttribute : FilterAttribute, IAuthorizationFilter { 

     public virtual void OnAuthorization(AuthorizationContext filterContext) { 
      if (filterContext == null) { 
       throw new ArgumentNullException("filterContext"); 
      } 

      if (!filterContext.HttpContext.Request.IsSecureConnection) { 
       HandleNonHttpsRequest(filterContext); 
      } 
     } 

     protected virtual void HandleNonHttpsRequest(AuthorizationContext filterContext) { 
      // only redirect for GET requests, otherwise the browser might not propagate the verb and request 
      // body correctly. 

      if (!String.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)) { 
       throw new InvalidOperationException(MvcResources.RequireHttpsAttribute_MustUseSsl); 
      } 

      // redirect to HTTPS version of page 
      string url = "https://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl; 
      filterContext.Result = new RedirectResult(url); 
     } 

    } 
} 
+0

코드 플렉스 소스를 탐색하여 볼 수 없다는 점이 흥미 롭습니다. –

관련 문제