我正在保护我的一些 ActionResults,[RequireHttps]
而且效果很好。
人们在转到其他链接后会保持他们的 https 连接。我只希望在我指定的某些页面上使用 https,我希望在其他所有页面上使用 http。
我正在保护我的一些 ActionResults,[RequireHttps]
而且效果很好。
人们在转到其他链接后会保持他们的 https 连接。我只希望在我指定的某些页面上使用 https,我希望在其他所有页面上使用 http。
您可以尝试创建一个基本控制器并覆盖该OnActionExecuting
方法以执行以下操作:
protected override void OnActionExecuting(ActionExecutingContext ctx) {
{
bool redirect = true;
if (!ctx.HttpContext.Request.IsSecureConnection) redirect = false;
// Bypass if [RequireHttps] is applied
if (ctx.ActionDescriptor.ControllerDescriptor.GetCustomAttributes
(typeof(RequireHttpsAttribute), true).Length > 0) redirect = false;
if (ctx.ActionDescriptor.GetCustomAttributes
(typeof(RequireHttpsAttribute), true).Length > 0) redirect = false;
if (!redirect)
{
base.OnActionExecuting(ctx);
}
else
{
// Redirect to HTTP
string url = "http://" + ctx.HttpContext.Request.Url.Host
+ ctx.HttpContext.Request.RawUrl;
ctx.Result = new RedirectResult(url);
}
}