2013-08-05 155 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> 
相关问题