这与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
答案 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
}
}
然后,您只需将属性添加到需要它的操作中,您应该全部处理。