2010-11-09 36 views
5

Je l'ai fait MVC dans le passé, mais je suis nouveau à ASP et ASP MVC. J'adore la facilité qu'offre ASP MVC, mais je n'arrive pas à comprendre comment obtenir plus de contrôle sur les utilisateurs. Par défaut, le MVC fournit un formulaire d'inscription d'utilisateur minimal. Je l'ai regardé autour un peu, mais j'ai encore deux questions:Profils d'utilisateur ASP MVC

  1. Comment puis-je faire la base de données de l'utilisateur une base de données locale dans mon projet? Je pense que SQLEXPRESS est utilisé pour stocker les valeurs de l'utilisateur, dans ce qui semble être un processus magique. Comment est-ce que je dé-magic-ify ceci? Je voudrais avoir plus de contrôle sur l'emplacement de cette base de données.

  2. Cela conduit à une autre question: Comment développer l'utilisateur? J'ai lu sur les profils, mais je suis toujours confus au sujet de quelques choses. Comment préparer un profil et le lier avec un utilisateur? Qu'est-ce qui sert de clé étrangère? Et, dans mes contrôleurs, comment puis-je accéder à diverses parties de l'utilisateur comme nom d'utilisateur, email, ou même du profil comme prénom, nom (bien que je suppose une fois quand j'ai une base de données de profil et une base de données utilisateur, je peux courir commandes SQL pour récupérer des données)

J'apprécierais vraiment quelques conseils pour les bonnes ressources, et/ou les meilleures pratiques avec ASP.NET

Répondre

3

Je commencerais d'ici:

également une grande série d'articles (18 articles !!!) est de Scott Mitchell à 4GuysFromRolla.

Le modèle d'appartenance ASP.NET est conçu pour avoir une architecture enfichable. Vous pouvez écrire votre propre implémentation MembershipProvider qui correspond le mieux à vos besoins.

Même si la plupart des exemples que vous trouverez sur le net concernent les formulaires Web ASP.NET, il n'y a que de très petites différences lorsqu'ils sont utilisés avec MVC.

8

Je commencerais par lire ce Microsoft article officiel sur l'extension de l'API d'adhésion ASP.NET. Il parle de créer des tables supplémentaires pour stocker des informations supplémentaires sur les utilisateurs.

La base de données des membres

  1. Si vous avez une base de données existante qui contient toutes vos autres informations du site, vous pouvez exécuter l'outil aspnet_regsql.exe pour générer les tables utilisateur nécessaires. Vous devrez ensuite modifier votre fichier web.config et ajouter le SqlMembershipProvider avec votre chaîne de connexion.
  2. Si vous créez un nouveau projet et n'avez pas de base de données, commencez par un nouveau projet MVC dont l'abonnement est déjà activé. Votre base de données sera créée dans le dossier App_Data lors de la première utilisation, et vous pouvez le prendre et l'attacher à votre serveur SQL/SQLEXPRESS. Ensuite, il suffit de changer la chaîne de connexion pour utiliser un serveur de base de données plutôt qu'un fichier local.

Création de tables supplémentaires

Cette partie est en fait assez simple et consiste en quelques étapes:

  1. Créer une nouvelle table, à savoir UserProfiles
  2. Ajouter une colonne uniqueidentifier comme votre clé primaire et ajoutez une clé étrangère à la table aspnet_Users
  3. Ajoutez les autres champs que vous souhaitez stocker (téléphone, Adresse, sexe, etc.)
  4. Si vous utilisez LINQ-to-SQL ou Entity Framework, vous pouvez simplement faire glisser les tables dont vous avez besoin sur le concepteur et vous serez prêt à interroger les tables d'appartenance.

Voici un petit échantillon sur l'utilisation

Ajouter cet extrait à votre référentiel responsable de l'information Profil/compte.

public aspnet_User GetUser() 
{ 
    MembershipUser user = Membership.GetUser(); 
    return db.aspnet_Users.SingleOrDefault(u => u.UserId == user.ProviderUserKey); 
} 

Ensuite, l'intérieur de vos modèles, vous pouvez obtenir l'utilisateur et accéder à l'autre des informations stockées dans votre table USERPROFILES.

AccountRepo accountRepo = new AccountRepo(); 
aspnet_User user = accountRepo.GetUser(); 
string Address = user.UserProfile.Address; // bingo! 

Et c'est à peu près tout!

Ceci est évidemment un exemple simple, et vous devriez être vérifier si l'utilisateur est nulle et vous pouvez également créer une classe responsable de renvoyer les informations nécessaires sur un utilisateur, mettre en œuvre la mise en cache, etc ..