在ASP.NET MVC中对https上的控制器执行选择性操作

时间:2014-08-22 20:04:41

标签: asp.net-mvc asp.net-mvc-4

我要求在https和rest上运行选择性操作方法,应该在https上执行。

为实现这一目标,我创建了自定义属性并设置了操作。

public class RequiresSSL : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase req = filterContext.HttpContext.Request;
        HttpResponseBase res = filterContext.HttpContext.Response;

        //Check if we're secure or not and if we're on the local box
        if (!req.IsSecureConnection && !req.IsLocal) 
        {
            var builder = new UriBuilder(req.Url)
            {
                Scheme = Uri.UriSchemeHttps,
                Port = 443
            };
            res.Redirect(builder.Uri.ToString());
        }
        base.OnActionExecuting(filterContext);
    }
}

设置操作

    [RequireHttps]
    public ActionResult Index()
    {
      ..
    }

操作正在https中执行,其属性为“RequireHttps”但我遇到的问题是,没有属性的操作仍在https上执行,这不是必需的。

你能指出我在这里做错了什么吗?或建议我根据要求在https或http上执行操作的良好解决方案。

0 个答案:

没有答案