2009-06-14 7 views
1

J'ai une application ASP.NET MVC dans laquelle je viens d'intégrer le système d'identité fédérée tiers RPX. L'intégration fonctionne bien, mais j'ai du mal à comprendre ce qu'il faut en faire au niveau ASP.NET. Je suis assez nouveau à ASP.NET (je l'apprends avec MVC), et j'ai découvert un peu le modèle de fournisseur pour les données d'adhésion et de profil, et il semble incroyablement complexe (mais tout aussi puissant). La chose spécifique que je lutte avec est la persistance de l'utilisateur à la base de données. J'ai jusqu'à présent utilisé la mise en œuvre standard SqlMembershipProvider, qui a fonctionné très bien. Cependant, je veux maintenant faire des choses comme stocker et vérifier un code de vérification dans la base de données pour la vérification d'email (dans le cas où l'adresse email de l'utilisateur est non vérifiée par le résultat RPX), et persister les données retournées. Certaines d'entre elles sont essentielles à l'authentification, telles que l'adresse e-mail, tandis que d'autres sont simplement des informations de profil (comme l'âge, le sexe, etc.) de l'utilisateur.Ai-je besoin d'un fournisseur d'appartenances personnalisé pour intégrer l'authentification tierce dans ASP.NET?

Dans la base de données ASP.NET, j'ai d'autres tables spécifiques aux applications avec lesquelles j'interagis via NHibernate. Ma compréhension de l'aspect Membership/Profile dans ASP.NET est qu'il gère la persistance, et donc je n'ai pas besoin de faire quoi que ce soit avec NHibernate pour que ça marche. Mon but est que l'expérience de connexion soit similaire à celle de StackOverflow, mais avec quelques bits supplémentaires (comme la vérification par email). Ai-je besoin de créer un fournisseur personnalisé complet pour le faire, ou puis-je modifier le SqlMembershipProvider par défaut de manière efficace?

[S'il vous plaît voir aussi my other question, en ce qui concerne les mots de passe dans une telle application.]

+1

+1 pour apprendre ASP.NET pour la première fois avec MVC! w00! –

Répondre

2

Je l'ai fait un travail similaire dans le passé tout en créant une nouvelle classe de fournisseur qui hérite de SqlMembershipProvider, remplaçant alors les méthodes que je dois .

Vous pouvez toujours appeler l'implémentation de la méthode de base pour effectuer la majeure partie du travail, puis exécuter la logique supplémentaire dont vous avez besoin dans votre classe dérivée. Construire un fournisseur à partir de zéro est beaucoup de travail, et devrait être votre dernier recours seulement.

Vous pouvez ajouter une nouvelle table à la base de données avec une référence clé à aspnet_Membership - puis vous ajoutez vos propres procédures stockées que vous appelez de vos méthodes de fournisseur dérivé pour faire ce que vous avez besoin de cette nouvelle table. Cela vaut mieux que d'ajouter des colonnes au schéma d'appartenance, car cela permet de découpler votre contenu personnalisé.

Vous devrez toujours étudier la classe SqlMembershipProvider, en termes de ce que vous devez remplacer, mais je pense que cette approche fonctionnera pour vous, en fonction de ce que vous avez décrit.

+0

Merci pour les commentaires, cela ressemble à un plan beaucoup mieux que la mise en œuvre d'un fournisseur entièrement personnalisé! Avez-vous des idées sur la question connexe? – alastairs