2013-08-05 6 views
0

У меня есть веб-сайт, написанный в ASP.Net MVC4 и развернутый в IIS7.5, пользователю сначала нужно войти в систему, прежде чем просматривать остальную часть Интернета, так например, вот как выглядит источник:Force 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. Я также рекомендую вам отправлять ваши файлы cookie для проверки подлинности с флагом secure (requireSSL="true" в вашем web.config).

0

Вы также можете посмотреть IIS Url rewrite, чтобы перенаправить URL-адрес с адреса https на http-адрес. Например, эти правила перенаправляют весь трафик 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> 
Смежные вопросы