我使用操作篩選器屬性這樣
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將繼承該控制器。 希望能夠幫助 您只需確保所有「頁面」都是控制器操作返回的視圖。如果需要的話,這應該是一個非常容易的改變。
您的意思是頁面? html文件? – VJAI
http://serverfault.com/questions/165835/how-to-restrict-access-to-web-pages-for-https – VJAI
感謝您的迴應,馬克。 「頁面」是指所有的HTML頁面,JS腳本,圖像文件。我已經推斷了這些問題(我認爲):包括他們使用@ Url.Content,它已被替換爲直接的「https:// ...」鏈接。但是,我使用的是DevExpress組件,它們有一個通過「DXR.axd」訪問的處理程序,它不使用加密來請求資源(例如CSS文件,圖像),我不確定是否可以更改。有些東西仍然不安全地被訪問,我需要揪出它或者死掉。 :) –