MVC 5: Dois-je hériter mon utilisateur de la classe IdentityUser?
J'essayais d'apprendre Asp.Net de l'Identité et de
dans ce tutoriel,
Créer un Entity Framework Code First ToDo modèle dans les Modèles\AppModels,cs partie MyUser
classe
hérite de IdentityUser
classe et MyDbContext
hérite de IdentityDbContext<MyUser>
classe. Pourquoi est-ce?
Permet de dire que j'ai un User
classe qui contient toutes les informations de l'utilisateur de mon application web, cette classe hérite de IdentityUser, et mon DbContext
hériter de IdentityDbContext<User>
?
Aussi, quels sont les avantages de inheritng dbcontext classe de IdentityDbContext<TClass>
sur la plaine DbContext
classe comme le fait le MVC 4
source d'informationauteur Cybercop
Vous devez vous connecter pour publier un commentaire.
ASP.Net MVC 5.0 utilise OWIN la mise en oeuvre plug-and-play.
Il y a quelques interfaces conçues pour cette
DE Scott Allen Article
IUser
IUserStore
Le I*interfaces de Magasin dans le Noyau de l'Identité de l'assemblée sont pondérées afin d'offrir différents niveaux de fonctionnalité.
UserManager
Le UserManager est un béton de classe et c'est le UserManager qui fournit la logique de domaine pour travailler avec les informations de l'utilisateur. Le UserManager sait quand hachage d'un mot de passe, lors de la validation d'un utilisateur, et comment gérer les réclamations.
Il y a quelques points d'extensibilité avec le UserManager, par exemple, le gestionnaire a un certain nombre de propriétés que vous pouvez utiliser pour définir un utilisateur personnalisée de validation d'un objet la mise en œuvre de IIdentityValidator), un mot de passe personnalisé validateur, et hasher un mot de passe personnalisé. Le principal point d'extensibilité est via le UserManager constructeur, qui vous permet de passer en paramètre un objet de mise en œuvre IUserStore. Si vous souhaitez utiliser un UserManager pour gérer les informations utilisateur stockées dans SQL Server, nous allons nous intéresser à la pré-construit des classes pour ce faire, dans un post plus tard, mais il est également facile de créer un IUserStore de travailler avec un document de la base de données ou d'autres formes de stockage.
Souviens d'une IUserStore ne sait pas comment travailler avec des mots de passe utilisateur, seulement un IUserPasswordStore sait sur les mots de passe. Le UserManager est au courant des différentes principales interfaces et va essayer de travailler avec les fonctionnalités de l'objet de banque de données dans le constructeur. Par exemple, si vous utilisez FindByIdAsync le UserManager pouvez utiliser le magasin de l'utilisateur de la requête d'un utilisateur par l'ID, mais si vous appelez FindAsync (qui prend un nom d'utilisateur et un mot de passe), et la banque sous-jacente n'est pas de mettre en œuvre la IUserPassword interface de banque, le UserManager sera forcé de lever une exception.
Il est difficile d'utiliser une seule classe de béton pour tout les utilisateurs de mots de passe à des réclamations, et des compromis doivent être faits. Nous nous pencherons également sur certains des compromis dans les prochains posts.
EDIT: découvrez La Mise En Œuvre De ASP.Net Identité
Maintenant ASP.Net supports à l'identité générique
IdentityUser<TKey>
avant, c'était une chaîne,j'.e nom d'utilisateur est une chaîneLa IdentityDbContext<> classe est une classe qui hérite de DbContext comme vous le feriez habituellement, mais fournit des prêts DbSets pour les Rôles et les Utilisateurs.
Voir classe doc ici:
http://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.entityframework.identitydbcontext%28v=vs.111%29.aspx
Oui, votre utilisateur dto devrait hériter de IdentityUser et tous les champs que vous voulez dans votre base de données associée à votre utilisateur peut être ajouté à cette catégorie.
Cela le rend beaucoup plus facile d'ajouter des champs supplémentaires à votre base de données qui sont associés à votre nom d'utilisateur et si vous êtes en utilisant Entity Framework migrations de base de données et l'initialise signifie que vous pouvez maintenant générer l'ensemble de la base de données d'Identité de votre DbContext.