2010-05-10 9 views
1

Membres/Rôle/Profil API fournisseurs est apparu dans les premiers jours de asp.netasp.net fournisseur de l'appartenance api. convivialité. les meilleures pratiques

Presque chaque fois que je ne peux pas vivre avec API standard & devez ajouter des fonctionnalités supplémentaires (pour le tri, la récupération E.T.C.). Je dois également utiliser une structure de base de données différente souvent (avec une clé étrangère pour certaines tables par exemple) ou penser à des améliorations de performance. Ces considérations ont contraint les équipes auxquelles j'ai participé à construire leurs propres fournisseurs mais je ne supporte pas l'implémentation de l'API des fournisseurs (car nous n'utilisons pas au moins 70% des fonctionnalités standard). De plus, les fournisseurs conçus pour des projets précis ont rarement été réutilisés.

Je me demande si quelqu'un a trouvé des fournisseurs suisse-couteau-jours-début API mise en œuvre qui est utile pour tout type de projet sans refactorisation ... Ou utilisez-vous vos propres implémentations des premiers jours-API Ou peut-être vous abandonnez l'architecture standard et utilisez des implémentations allégées?

Merci à l'avance

Répondre

2

moi aussi j'ai trouvé que, souvent, je ne ai pas besoin tous la fonctionnalité exposée dans les bases standard MembershipProvider. Ces jours-ci, j'ai tendance à écrire mes propres méthodes légères pour authentifier et autoriser les utilisateurs.

Je suis généralement ceux-ci à titre indicatif:

  • Définir le mode d'authentification aux formulaires dans web.config
  • classe personnalisée pour authentifier un utilisateur et récupérer des rôles pour UserId associés
  • formulaire de connexion manuellement question FormsAuthenticationCookie (voir exemple ci-dessous)
  • Configurer les éléments web.config dans les sous-répertoires d'interdire l'accès aux rôles

Voici un exemple de code que vous pouvez utiliser pour créer FormsAuthenticationTicket vous, en utilisant vos propres méthodes légères pour authentifier et autoriser vos utilisateurs:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, 
data.AccountId.ToString(), 
DateTime.Now, 
DateTime.Now.AddHours(24), 
rememberMe, 
data.ToString()); 

string encryptedTicket = FormsAuthentication.Encrypt(ticket); 
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 
if (rememberMe) 
cookie.Expires = DateTime.Now.AddDays(30); 

HttpContext.Current.Response.Cookies.Add(cookie); 

Ceci est juste une idée approximative mais rappelez-vous qu'il est tout à fait à vous si vous utilisez les MembershipProviders tels quels, si vous les mettez en œuvre vous-même, ou si vous choisissez de les abandonner complètement et de créer les vôtres, en fournissant uniquement les fonctionnalités dont vous avez besoin. Je choisis souvent ce dernier, simplement parce que beaucoup d'applications que j'écris sont des mises à niveau de systèmes hérités qui ont déjà des bases de données d'adhésion en place, etc.

Espérons que cela aide.

+0

Merci Richard, ces jours-ci je préfère construire une implémentation légère au lieu d'une architecture prête à l'emploi. Quelle est la différence entre FormsAuthenticationTicket et simple FormsAuthentication.SetAuthCookie (account.Id.ToString(), true); approches? –

+0

Fonctionnellement, les deux sont * presque * équivalents. Cependant, lorsque vous définissez le cookie vous-même, vous contrôlez mieux les données et certaines propriétés supplémentaires. Ainsi, vous pouvez également stocker, si vous le souhaitez, des informations de rôle dans ce cookie, par exemple. – Richard