2010-11-09 4 views
2

J'ai un site mvc asp.net qui fonctionne avec l'authentification ASP.net. J'ai une table UserInformation qui stocke également des informations supplémentaires sur chaque utilisateur. Sur presque toutes les pages, j'appelle à la base de données pour tirer l'enregistrement UserInformation pour l'utilisateur actuel au moins une fois.ASP.net MVC suppression des appels de données répétés

Je pense que tous ces appels de données répétés pour la même information doivent être exagérés. Y at-il de toute façon je peux les réduire? Mise en cache? Stocker l'enregistrement d'information d'utilisateur pour l'usage futur etc. Je suis sûr que je ne suis pas la première personne à rencontrer ce problème, donc je ne voulais pas réinventer la roue.

Merci à l'avance

Répondre

2

Vous pouvez utiliser un IIdentity personnalisé et IPrincipal. Voici un bon article décrivant comment y parvenir (la partie intéressante se passe dans la méthode btnAuthenticate_Click qui dans une application ASP.NE MVC serait l'action du contrôleur d'authentification, ici est émis le ticket d'authentification avec des données personnalisées). Dans cet exemple, l'idée est que le ticket d'authentification est créé manuellement et que la propriété userData est utilisée pour stocker des informations supplémentaires. Cela peut ne pas convenir à votre cas si vous avez beaucoup de données car elles sont stockées dans un cookie. Mais au lieu d'utiliser le userData, vous pouvez le stocker ailleurs comme Session ou Cache. Vous pouvez également écrire un attribut personnalisé [Authorize] pour gérer le principal personnalisé (la partie qui correspond à la méthode Application_AuthenticateRequest dans l'article doit aller dans ce filtre d'autorisation personnalisé afin de reconstruire l'utilisateur).

Questions connexes