.NET-MVC - 通过SSL重写URL +某些URL?

时间:2010-06-18 20:23:31

标签: asp.net-mvc ssl

我有一个运行IIS 6的网络服务器,.NET MVC只有一个域名。该网站使用URL重写来生成以下URL:

  

domain.com/controller/action

我想强制一(1)个控制器使用SSL(其他人应该在没有SSL的情况下工作)。 我应该如何实施?

2 个答案:

答案 0 :(得分:4)

使用RequireHttpsAttribute装饰需要SSL的控制器。

[RequireHttps]
public class SecureController : Controller
{
   ...
}

尽管如果您使用Cassini进行调试,您可能更喜欢自定义版本忽略此问题来处理来自localhost的请求。

[AttributeUsage( AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false )]
public class RemoteRedirectToHttpsAttribute : RequireHttpsAttribute
{
    public override void OnAuthorization( AuthorizationContext filterContext )
    {
        if (filterContext == null)
        {
            throw new ArgumentNullException( "filterContext" );
        }

        if (filterContext.HttpContext != null && (filterContext.HttpContext.Request.IsLocal || filterContext.HttpContext.Request.IsSecureConnection))
        {
            return;
        }

        filterContext.Result = new RedirectResult( filterContext.HttpContext.Request.Url.ToString().Replace( "http:", "https:" ) );
    }
}

答案 1 :(得分:0)

您可以注释需要具有RequireHttps属性的SSL的控制器,或者从使用此属性标记的基本控制器派生它们。