Décorez le contrôleur qui a besoin de SSL avec RequireHttpsAttribute.
[RequireHttps]
public class SecureController : Controller
{
...
}
Bien, vous pouvez préférer une version personnalisée qui ne tient pas compte des demandes de ce localhost si vous utilisez Cassini pour le débogage.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class RemoteRedirectToHttpsAttribute : RequireHttpsAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (filterContext.HttpContext != null && (filterContext.HttpContext.Request.IsLocal || filterContext.HttpContext.Request.IsSecureConnection))
{
return;
}
filterContext.Result = new RedirectResult(filterContext.HttpContext.Request.Url.ToString().Replace("http:", "https:"));
}
}
J'utilise déjà un attribut RequireSSL personnalisé. Cependant, mon site Web (IIS) n'est pas encore configuré pour SSL. Et je suis seulement en mesure de configurer en définissant «Sécurité de répertoire» pour l'ensemble du site Web. Ou est-ce que cela ** ne ** désactivera pas automatiquement les requêtes 'http' normales? – Ropstah
@ropstah - si vous utilisez cet attribut sur un contrôleur/une action (autre qu'une connexion locale), il redirigera vers une requête sécurisée. En outre, vous devriez noter que la demande initiale devrait vraiment être un GET, pas un POST. Si la première requête à une action protégée est un POST, cela ne fonctionnera pas puisque la redirection sera un GET à la même URL (sauf en utilisant https à la place). – tvanfosson
Je comprends ce que vous dites, pas de problèmes là-bas. Cependant, mon vrai problème est probablement la configuration de SSL dans IIS. Est-ce que la 'configuration de SSL' implique que les requêtes 'normales' 'http' (oui pas' https') continueront de fonctionner pour le site web? (sauf pour le contrôleur attribué bien sûr ..) – Ropstah