检查SSL并转发给它

时间:2009-09-08 19:01:14

标签: asp.net-mvc vb.net

这与this question类似:

但是我想在MVC中执行它,其中“Request”对象不能直接访问。是否有方法装饰器来指定需要SSL的操作?如何在MVC中提到相应的答案?

If Not Request.IsLocal AndAlso Not Request.IsSecureConnection Then
    Dim ub As var = New UriBuilder(Request.Url)
    ub.Scheme = Uri.UriSchemeHttps
    ub.Port = -1
    ' use default port for scheme
    Response.Redirect(ub.Uri.ToString(), True)
    Return
End If

1 个答案:

答案 0 :(得分:0)

如果您创建了自定义属性过滤器并将其附加到需要SSL的操作,该怎么办?我想如果你这样做,你上面写的代码就足以解决问题。

编辑: 这是一小段示例代码。对不起,它不是VB,但我并不精通它,特别是涉及到MVC的东西。

public class SSLFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        string requestUrl = filterContext.HttpContext.Request.Url;

        //If requestUrl not using SSL
            string newUrl = "URL using SSL";
            filterContext.Result = new RedirectResult(newUrl);
        //End If
    }
}

然后,您只需将属性添加到需要它的操作中,您应该全部处理。