MVC 6 (ASP.NET Rdzeń 1.0) działa nieco inaczej w to sposób filtrów rejestrujących:
Startup.cs - AddMvc z filtrem dla RequireHttpsAttribute:
public void ConfigureServices(IServiceCollection services)
{
// TODO: Register other services
services.AddMvc(options =>
{
options.Filters.Add(typeof(RequireHttpsAttribute));
});
}
decyzje projektowe wyjaśnione :
- Użyj filtra w Startup.cs dla konfiguracji globalnej (ponieważ chcemy, aby było to wszędzie).Uruchomienie powinno być odpowiedzialne za rejestrację i konfigurację wszystkich reguł globalnych. Jeśli Twoja firma zatrudnia nowego programistę, spodziewa się znaleźć globalną konfigurację w Startup.cs.
- Użyj logiki RequireHttpsAttribute, ponieważ jest sprawdzona (przez Microsoft). Nigdy nie używaj "magicznych" ciągów, takich jak "http: //" i "https: //", gdy można tego uniknąć, ponownie wykorzystując składnik Microsoft stworzony w celu zapewnienia tej samej logiki.
Jeśli używasz swoją stronę MVC w localhost bez SSL:
- http: // localhost: 1337/(bez SSL)
- https: // localhost: 1337/(SSL)
Rozważ oglądanie how to run without SSL in localhost while still requiring https it in production.
Uwaga:
Jako alternatywnego mogliśmy zrobić „class BaseController: Kontroler” i uczynić wszystkie nasze kontrolery dziedziczą „BaseController” (zamiast kontrolera). Następnie musimy tylko ustawić globalne miejsce atrybutu 1 (i nie musimy rejestrować filtra w Startup.cs).
Niektórzy ludzie wolą styl atrybutu.
Przykład użycia:
[RequireHttpsAttribute]
public class BaseController : Controller
{
// Maybe you have other shared controller logic..
}
public class HomeController : BaseController
{
// Add endpoints (GET/POST) for Home controller
}
Polecam niestandardowy moduł przekierowania, ponieważ szybciej go złapie i przekieruje w cyklu życia mvc. Robiłbym to inaczej niż ten artykuł [http://alexwolfthoughts.com/efficient-mvc-redirects-using-an-http-module], ale pokazuje niektóre z możliwości. – christo8989