Réussir la mise en œuvre personnalisée UserManager<IUser> dans l'Identité 2.0
Je suis en train de naviguer dans le trou noir qu'est la coutume de la mise en œuvre de l'Identité d'Appartenance. Mon objectif en ce moment est tout simplement pour obtenir cette ligne de mon ApiController
correctement récupérer mon UserManager:
public IHttpActionResult Index()
{
var manager = HttpContext.Current.GetOwinContext().GetUserManager<UserManager<MyUser,int>>();
//manager is null
}
Voici mon installation. Dans mon Startup
's Configuration que j'ai mis en place la WebApi et d'ajouter ma OwinContext:
app.CreatePerOwinContext<UserManager<MyUser,int>>(Create);
Ma méthode de création:
public static UserManager<User,int> Create(IdentityFactoryOptions<UserManager<MyUser,int>> options, IOwinContext context)
{
return new UserManager<MyUser,int>(new UserStore(new DbContext()));
}
le reste, c'est la plupart des applications de base que je puisse faire.
MyUser:
public class MyUser : IUser<int>
{
public int Id { get; set; }
public string UserName { get; set; }
}
MyUserStore:
public class MyUserStore : IUserStore<MyUser,int>
{
private IdentityDbContext context;
public MyUserStore(IdentityDbContext c)
{
context = c;
}
//Create,Delete, etc implementations
}
MyDbContext:
public class MyDbContext : IdentityDbContext
{
public MyDbContext() : base("Conn")
{
}
}
C'est tout pour l'amour de l'apprentissage comment l'Identité des œuvres, dont je suis assez convaincu personne ne sait vraiment. Je veux être en mesure de personnaliser entièrement mes Utilisateurs et des Rôles finalement, en évitant de Microsoft IdentityUser.
Encore une fois, mon problème est que dans mon contrôleur, je suis null
lorsque vous essayez de récupérer mon UserManager.
Toute aide est grandement appréciée.
Qui a été plus d'une expression de ma frustration quand je ne pouvais pas trouver de très nombreux exemples
OriginalL'auteur Jonesopolis | 2014-10-14
Vous devez vous connecter pour publier un commentaire.
J'ai eu plusieurs erreurs, mais le principal était que mon Démarrage de classe ressemblait à :
Bien sûr, la OWIN pipeline de brancher ma dépendances après coup d'envoi de la WebAPI appels. La commutation de ceux autour de a été mon principal problème.
En plus, j'ai enfin trouvé ce grand guide chemin vers le bas dans ma recherche Google. Il répond à peu près tout ce que je recevais. J'avais besoin de mettre en œuvre un béton de classe qui a été un
UserManager<MyUser,int>
J'espère c'est de pouvoir aider quelqu'un plus tard.
OriginalL'auteur Jonesopolis
Êtes-vous à l'aide de MyIdentity.L'utilisateur ou MyIdentity.MyUser? Vous avez deux objets différents, passé dans les TUser paramètre dans vos exemples.
J'ai testé la mise en place et de ne pas avoir de problèmes de récupération de l'enregistrés instance de la UserManager.
De personnaliser entièrement votre des Utilisateurs et des Rôles, vous aurez besoin pour la fin de l'écriture d'une nouvelle mise en œuvre de la UserManager afin d'obtenir votre Authentification, les Revendications, les Rôles, les appels de méthode, etc pour travailler.
Si vous essayez d'apprendre l'Identité de travaux, je vous suggère de travailler avec l'implémentation par défaut de UserManager et IdentityUser. Obtenir que le travail d'abord.
Voici un bon tutoriel
Finalement, créer vos propres utilisateurs la mise en œuvre de IdentityUser. Tous les UserManager les fonctions travail et vous aurez accès à vos nouvelles propriétés. Les propriétés supplémentaires seront automatiquement intégrées dans le AspnetUser table générée par l'IdentityDbContext.
Ou vous pouvez commencer à construire votre personnalisé MyIdentityUser avec clé étrangère des références à d'autres objets.
Cela aide tout?
IUser est mis en œuvre par IdentityUser, qui est un contrat pour l'Id et le nom d'utilisateur propriétés.
(suite)Le TUser objet générique UserManager accepte est nécessaire de mettre en œuvre IUser. Si votre MyUser objet est accepté comme le générique du type d'objet, mais UserManager a beaucoup plus de méthodes telles que "ChangePasswordAsync(TUser d'utilisateur, mot de passe de chaîne)" qui sont tributaires de ces propriétés faisant partie de l'objet générique. IdentityUser contient ces propriétés. À l'aide de IdentityUser comme une classe de base pour votre MyUser objet vous permet d'économiser du temps d'avoir à déclarer vous-même ou de la transgression de la UserManager méthodes pour les faire fonctionner avec votre définis par les propriétés.
OriginalL'auteur Scott