【问题标题】:Always need Https to a particular route not for whole website总是需要 Https 到一个特定的路由而不是整个网站
【发布时间】:2012-06-22 06:33:31
【问题描述】:

我想为单个页面而不是整个网站使用 https。 我的应用程序在 MVC3 中。我已经使用下面的代码来实现这一点。

[RequireHttps]
public ViewResult YourAction()

但是在路由到我的特定操作之后,整个网站在 https 下运行。 我想为单个页面而不是整个网站使用 https。

【问题讨论】:

  • 我没有得到正确的答案,在链接中的示例中,如果我想/或不想使用 https,我必须在每个操作上写下该属性。谁能提供更好的方法。
  • 为什么不让它在 SSL 下运行呢?就像 Chuck Norris 提到的线程中所说的一个答案一样,在 SSL 中执行某些操作后切换回未加密通常是错误的。

标签: asp.net-mvc-3 asp.net-mvc-routing asp.net-mvc-3-areas


【解决方案1】:

我已经使用下面的代码完成了。

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new HandleErrorAttribute());
                filters.Add(new LimitHttpsAttribute());
            }

 public class LimitHttpsAttribute : IAuthorizationFilter
    {
        private static Type ssl = typeof(RequireHttpsAttribute);

        public void OnAuthorization(AuthorizationContext filterContext)
        {
            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext");
            }
            if (filterContext.HttpContext != null && filterContext.HttpContext.Request != null)
            {
                if (!filterContext.HttpContext.Request.IsSecureConnection ||
                    filterContext.HttpContext.Request.IsAuthenticated)
                {
                    return;
                }
                if (!RequiresSSL(filterContext))
                {
                    filterContext.Result = Unencrypted(filterContext.HttpContext.Request);
                }
            }
        }

        private bool RequiresSSL(AuthorizationContext filterContext)
        {
            return filterContext.ActionDescriptor != null ?
                filterContext.ActionDescriptor.GetCustomAttributes(ssl, true).Length > 0
                : false;
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2011-06-24
    • 2020-02-03
    • 2015-05-10
    • 2013-11-22
    相关资源
    最近更新 更多