我使用这样的动作过滤器属性
public class RequireSSL : 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 machine
if (!req.IsSecureConnection && !req.IsLocal)
{
var builder = new UriBuilder(req.Url)
{
Scheme = Uri.UriSchemeHttps,
Port = 443
};
res.Redirect(builder.Uri.ToString());
}
base.OnActionExecuting(filterContext);
}
}
然后我用这个属性创建了一个名为 SecureController 的基本控制器
[RequireSSL]
public class SecureController : Controller
{
}
那么我想成为 SSL 的任何控制器都将继承这个控制器。希望对您有所帮助只需要确保所有“页面”都是控制器操作返回的视图。如果需要,这应该是一个非常容易的更改。