Donc, je crée un site Web ASP.NET MVC. P>
Il a une page d'inscription d'utilisateur assez complexe avec beaucoup de champs. Ma question est, où devrais-je persister cela? Les tableaux utilisateur créés par l'outil de fournisseur d'adhésion ne contiennent pas ces colonnes et je suis laissé confus sur ce que la meilleure pratique est en termes de stockage de ces informations supplémentaires sur chaque utilisateur? P>
est-ce là où un fournisseur de profil entre en jeu? Comment travaillent-ils? Sinon, comment pensez-vous et stockez-vous et stockez-vous les détails de l'utilisateur supplémentaires non fournis dans les colonnes STOCK des TablesProvider? P>
Quelqu'un peut-il me signaler quelques ressources sur la manière dont cela est traité, comment accéder à ces détails d'utilisateur supplémentaires lorsque j'en ai besoin, comment créer un nouvel utilisateur avec toutes ces informations, etc. P>
4 Réponses :
C'est ici que le fournisseur de profil ASP.NET est disponible. Vous pouvez l'utiliser pour stocker toutes les informations de profil que vous souhaitez sur un utilisateur. Tout ce que vous avez à faire est d'ajouter les champs dont vous avez besoin dans le fichier web.config, MSDN Link sur la configuration des champs de profil dans le fichier web.config . Pour résumer l'article, vous devez simplement ajouter le nom et le type Valeurs que vous souhaitez stocker sur le nœud Propriétés de l'élément de profil. Voici un exemple:
HttpContext.Profile["Name"] = name; HttpContext.Profile.GetProfileGroup("Address")["Zip"] = zip;
Je ne suis pas vraiment sûr qu'il y ait une meilleure pratique et cela dépend vraiment de la manière dont vous souhaitez utiliser les informations. p>
Premièrement, vous devez reconnaître que les membres et les profils sont deux choses distinctes. L'adhésion ASP.NET, le profil et la fonctionnalité de rôle sont conçus pour être utilisés comme service, servant plusieurs sites / applications. p>
Si vous regardez le schéma de ces relations, vous remarquerez que les utilisateurs sont uniques au système, mais un utilisateur peut être partagé sur des applications. Cela signifie que leurs informations de profil sont également partagées dans toutes les applications. L'adhésion est en réalité l'association d'un utilisateur à une application et contient des informations sur leur relation avec cette application spécifique (mot de passe, Q & A, etc.). P>
Vous pouvez utiliser le fournisseur de profil comme Ryan suggéré, mais 1) que les informations ne soient pas facilement interrogées si vous souhaitez recueillir des métriques de profil et 2) il est partagé dans tous les consommateurs des services d'adhésion / de profil. Vous pouvez cependant le prolonger pour répondre à vos besoins. P>
Vous pouvez étendre le fournisseur d'adhésion comme suggéré par Gortok et que les informations seraient relatives à l'application, mais vous devez vous assurer de ne pas casser les consommateurs existants du service en modifiant les procédures ou tables stockées existantes de manière à modifier. leur interface ou leur intention. p>
L'autre option est que vous pouvez le traiter comme un service et suivre ces informations par vous-même, référencement dans votre propre implémentation de profil à l'aide de l'ID utilisateur à partir du fournisseur ASP.NET SQL. P>
Il y a une bonne série (16 parties) sur abonnement, profilés et rôles < / a> sur 4 gars de Rolla que je recommanderais de lire, puis, une fois que vous connaissez toutes les pièces mobiles, faites une décision éduquée sur la meilleure façon de stocker et de la meilleure façon de structurer les informations de profil que vous êtes cherche à créer. p>
Je sais que ce message a été affiché depuis longtemps et le contexte de la question était probablement destiné à MVC2 ou plus tôt.
Il est maintenant MVC3, et je pensais que d'autres rechercher des réponses pour le contexte MVC5 pourraient être intéressés par cette solution. P>
dans un projet MVC5 standard qui a un compte utilisateur individuel activé
Vous trouverez le bloc de code suivant prêt à être utilisé dans {projet} /models/identitymodel.cs p> Ajoutez simplement plus de propriétés à cette classe et les propriétés seront persistées dans la base de données
Par exemple. p>