2010-10-31 6 views
0

Je suis nouveau sur ASP.NET MVC 2 et j'ai rencontré un problème simple.Authentification globale ASP.NET MVC2

Le fait est que je veux forcer l'utilisateur à se connecter pour voir mon site web. Cela signifie que lorsque l'utilisateur demande quelque chose comme Home.Index ou tout autre Controller.Action, je devrais vérifier si l'utilisateur est connecté et sinon, rediriger la demande vers Auth.LogIn.

Je pouvais vérifier l'autorisation dans chaque action de chaque contrôleur, mais je pensais qu'il devrait y avoir des approches plus élégantes pour cela.

Donc. Y a-t-il?

Répondre

2

Utilisez l'attribut [Authorize].

Vous pouvez le placer avant toute action pour laquelle vous souhaitez vérifier l'authentification. Si vous le placez sur la classe du contrôleur chaque action de ce contrôleur sera soumis à l'authentification

Exemple

[Authorize] 
public class MyController : Controller { 
} 

ou

public class MyController : Controller { 

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

Le Autorisez attribut juste vérifie si l'utilisateur a été connecté ou pas. La vue de connexion dans laquelle il redirige l'utilisateur est définie dans votre fichier web.config. Si vous vérifiez votre web.config, vous trouverez une section comme celle-ci dans la balise system.web

<authentication mode="Forms"> 
    <forms loginUrl="~/Login/LogOn" name=".td_gsl_login_cookie" timeout="30" 
slidingExpiration="true"/> 
</authentication> 

L'attribut loginUrl est l'action du contrôleur où l'utilisateur redirigés si non connecté.

+0

Merci pour une réponse rapide. Cependant, je ne comprends pas très bien comment [Authorize] fonctionne et comment il considère quelle vue charger. – Paul

+0

@Paul: Vérifie ma réponse Mise à jour pour plus de détails – Lorenzo

+0

Cela a du sens maintenant. Merci beaucoup! – Paul