2013-08-05 202 views
0

我有一個網站寫在ASP.Net MVC4並部署到IIS7.5,用戶首先需要先登錄才能瀏覽網頁的其餘部分,例如,這裏的源代碼如下所示:強制HTTP而不是HTTPS

路線:

localhost/project/account/logon 
localhost/project/apple 
localhost/project/banana 

登錄方法:

[RequireHttps] 
public ActionResult Logon(string returnUrl) 
{ 
    ... 
    return View(); 
} 


[HttpPost] 
public ActionResult Logon(string user, string pwd, bool remember) 
{ 
    ... 
    string url = "/apple"; 
    return Redirect(url); 
} 

的問題是,用戶後登錄,我們將用戶重定向到其他鏈接使用return Redirect('/apple'),該機還採用HTTPS https://localhost/project/apple訪問新的鏈接。

如何防止使用HTTPS重定向?

回答

1

您可以使用下列內容:

[HttpPost] 
public ActionResult Logon(string user, string pwd, bool remember) 
{ 
    var url = Url.Action("someAction", "someController", null, "http"); 
    return Redirect(url); 
} 

但不這樣做。切勿通過未加密的通道傳輸會話Cookie。一旦用戶通過身份驗證並且您已向他發送身份驗證Cookie,則該用戶在您的網站上執行的所有操作都應通過SSL發送。我還建議你用secure標誌(你的web.config中的requireSSL="true")發出你的表單身份驗證cookie。

0

你也可以看看IIS Url rewrite做一個從https地址到http地址的url重定向。例如,此規則將所有https流量重定向到對應的http端點

<rewrite> 
     <rules> 
     <rule name="HTTPS to HTTP" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions> 
      <add input="{SERVER_PORT}" pattern="^443$" /> 
      </conditions> 
      <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Temporary" /> 
     </rule> 
     </rules> 
    </rewrite> 
相關問題