Question

Nous frapper un bon nombre de murs et des pierres d'achoppement que nous créons notre adhésion personnalisée basée sur MembershipProvider, MembershipUser et RoleProvider etc.

Nous avons un certain nombre d'exigences intéressantes et fournisseur d'appartenances ne semble pas être nous aider beaucoup dans leur réalisation:

  • Les utilisateurs peuvent avoir plusieurs connexions.
  • Les utilisateurs ne sont pas un nom d'utilisateur directement (mais peuvent avoir une connexion qui a un nom d'utilisateur).
  • Les utilisateurs ont une référence unique (actuellement une clé primaire auto-incrémentée).

Pour mettre en œuvre, nous avons deux tableaux: les utilisateurs qui a une relation unique avec beaucoup Logins

.

Cela signifie effectivement que nous avons un utilisateur qui (dans un monde hypothétique) peut se connecter via leur compte Active Directory automatiquement (si possible) et par l'intermédiaire d'un ou une combinaison OpenID Nom d'utilisateur / mot de passe alternativement. Nous aurons aussi des utilisateurs qui ne peuvent pas avoir un compte AD.

J'avais d'abord essayé re-purposing les cours d'adhésion en créant:  - CustomMembershipProvider  - CustomMembershipUser  - CustomRolesProvider

Mais tout mon combat contre elle vient de me donner des yeux noirs et bleus, vraiment, vraiment veut un nom d'utilisateur!

Ai-je allé sur ce la meilleure façon? Dois-je être à partir de stratch et non héritant quoi que ce soit? Dois-je me fondais sur la classe IProvider? Ou peut-être les classes GenericPrincipal et GenericIdentity? Ou suis-je manque tout simplement quelque chose avec MembershipProvider?

Je veux garder l'expérience de programmation de fin aussi facile que pour les membres hors-the-box des choses, par exemple.

Membership.GetCurrentUser();

Et éviter une moins simpliste expérience codeur final ...

Était-ce utile?

La solution

J'ai eu une expérience similaire et a décidé de donner à tous les utilisateurs un abonnement commun pour le contrôle des rôles, etc., et la carte à differenct AuthenticationProviders (OpenID, AD, les fournisseurs d'adhésion, etc.) afin qu'ils puissent être authentifiées différemment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top