2009-10-15 1 views
12

Как использовать атрибут RequireHttps ASP.NET MVC 2 Preview 2 Futures RequireHttps?ASP.NET MVC RequireHttps

Я хочу предотвратить отправку необработанных HTTP-запросов методу действия. Я хочу автоматически перенаправить на HTTPS.

MSDN:

Как использовать эту функцию?

ответ

11

Мое предположение:

[RequireHttps] //apply to all actions in controller 
public class SomeController 
{ 
    //... or ... 
    [RequireHttps] //apply to this action only 
    public ActionResult SomeAction() 
    { 
    } 

} 
+1

Это похоже на предотвращение HTTP-запросов, но не перенаправляет HTTPS. –

+0

Нет. Это может быть проблемой для сервера разработки ASP.NET Visual Studio. http://stackoverflow.com/questions/60113/ –

+5

ASP.NET MVC RequireHttps только в производстве: http://stackoverflow.com/questions/1639707/asp-net-mvc-requirehttps-in-production-only –

15

Я думаю, что вы будете нуждаться, чтобы свернуть свой собственный ActionFilterAttribute для этого.

public class RedirectHttps : ActionFilterAttribute { 
    public override void OnActionExecuting(ActionExecutingContext filterContext) { 
     if (!filterContext.HttpContext.Request.IsSecureConnection) { 
      filterContext.Result = 
       new RedirectResult(filterContext.HttpContext.Request.Url. 
        ToString().Replace("http:", "https:")); 
      filterContext.Result.ExecuteResult(filterContext); 
     } 
     base.OnActionExecuting(filterContext); 
    } 
} 

Тогда в контроллере:

public class HomeController : Controller { 

    [RedirectHttps] 
    public ActionResult SecuredAction() { 
     return View(); 
    } 
} 

Вы можете прочитать this, а также.

+0

Будьте внимательны, добавляя это к действию, предназначенному для метода POST. – Carl

+1

@ Карл почему? потому что почтовые данные теряются? Если вы хотите, чтобы конфиденциальные данные не были отправлены по не https, вам не следует обрабатывать эти данные. – eglasius

+1

@ çağdaş Вы можете использовать этот метод для изменения схемы - должны быть более безопасными, чем замена строки: http://stackoverflow.com/questions/17968426/changing-the-scheme-of-system-uri –

 Смежные вопросы

  • Нет связанных вопросов^_^