ASP.Net MVC 3 : page d’authentification par défaut

ASP.Net MVC3 est juste un vrai plaisir à utiliser malheureusement, elle réserver encore quelques (mauvaises) surprises.

ASP.Net possède un mécanisme d’authentification plutôt intelligent et implémentable facilement en ASP.Net MVC en plaçant des attributs Authorize sur les actions (ou le contrôleur) dont vous voulez protéger l’accès.

[Authorize]
public ActionResult Index()
{
   return View();
}

Grâce à ce simple attribut, chaque fois qu’un utilisateur tentera d’utiliser cette action, si celui-ci n’est pas authentifié alors il sera redirigé vers la page d’authentification définie dans le fichier web.config

 <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn"/>
</authentication>

 

Sauf que... la version 3 d’ASP.Net MVC, y compris la RC, contient un bug qui entraine une redirection automatique vers une page Account/Login. Bien entendu, cette page n’existe pas et plus embêtant, votre page d’authentification n’est jamais appelée.

En attendant que le problème soit corrigé dans la version finale (cross fingers), il existe une astuce donnée par l’équipe Microsoft : désactiver la propriété autoFormsAuthentication

 <appSettings>
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
    <add key="autoFormsAuthentication" value="false" />
</appSettings>

 

Pour la RC2, il s’agit cette fois de placer

 <add key="enableSimpleMembership" value="false" />