Comment puis-je créer un ClaimsIdentity objet pour Asp.NET MVC 5?
Je suis en train de travailler dans un .NET MVC 5 application. Je ne veux pas utiliser Entity Framework. Je tiens à vous identifier à un RavenDB base de données. Il me semble que je veux remplacer le UserManager
qui vient avec le Compte du Contrôleur. Je pense que je peux réécrire tout le UserManager fonctions pour travailler avec ma base de données, sauf que je ne comprends pas la ClaimsIdentity
objet.
Dans le SignInAsync
méthode, il y a un appel à UserManager.CreateIdentityAsync(...)
. Je sais qu'il renvoie une ClaimsIdentity
objet. Ce que je ne sais pas comment créer un ClaimsIdentity objet sur mon propre.
Je vois qu'il a 4 propriétés Actor
, BootstrapContext
, Claims
et Label
. Je ne sais pas ce que ces propriétés sont utilisées pour, et je ne sais pas comment les générer. Je suppose générer correctement est important, car il est de savoir comment le cookie d'authentification est faite.
J'ai regardé l'explication de la ClaimsIdentity objet ici, mais cela n'a pas vraiment m'aider à comprendre.
Si je pouvais voir le code pour CreateIdentityAsync()
, que serait probablement aide.
Si je vais au sujet de cette tout faux, s'il vous plaît laissez-moi savoir. Sinon, si quelqu'un pouvait me diriger vers la façon de générer la ClaimsIdentity objet, qui pourrait être utile.
ClaimsIdentity identity = new ClaimsIdentity
{
Actor = ????,
BootstrapContext = ?????,
Claims = ?????,
Label = ?????
}
Vous devez vous connecter pour publier un commentaire.
Peut-être le lien suivant peut aider:
Je pense que vous sont "en cours au sujet de cette tout faux". L'ASP.NET l'Identité de Cadre est conçu avec enfichables à la persistance dans l'esprit. La bonne façon de remplacer RavenDB pour EF n'est PAS de remplacer le
UserManager
. Il s'agit plutôt de mettre en œuvre un remplacementUserStore
. De sorte que la ligne dans leAccountController
qui crée laUserManager
allait changer à partir de:À:
Où la
RavenDBUserStore
serait une classe, vous avez écrit que mis en œuvreIUserStore
,IUserPasswordStore
et tous les autres *interfaces de Magasin vous avez besoin pour votre application particulière.Cette approche permet d'éviter que vous ayez besoin de comprendre et de mettre tout en
UserManager
et s'assure que vous serez en mesure de profiter des améliorations futures de laUserManager
de MMEPour plus d'informations sur cette procédure, voir la Vue d'ensemble de la Coutume des Fournisseurs de Stockage pour ASP.NET Identité et l'exemple de La mise en œuvre d'une Coutume MySQL ASP.NET Identité du Fournisseur de Stockage. Vous devriez également vérifier le code de la RavenDB.AspNet.L'Identité De Package Nuget créé par David Boike mentionné dans son réponse. La source est sur github à https://github.com/ILMServices/RavenDB.AspNet.Identity/tree/master/RavenDB.AspNet.Identity
ClaimsIdentity
sans bien comprendre comment et pourquoi est juste d'avoir des ennuis en bas de la piste. +1 pour la compréhension de la structure comme il est destiné à être utiliséEst ici que je suis venu avec. J'aimerais savoir si c'est la bonne façon d'accomplir cette tâche.
De travail dans un défaut MVC5 site, je suis allé pour le Compte du Contrôleur, et a trouvé l'
SignInAsync()
fonction. J'ai ajusté comme suit:Gardez à l'esprit que cela nécessite aussi la modification de la
[HttpPost] Login
fonction pour obtenir de l'utilisateur à partir de ma base de données au lieu d'utiliser leUserManager.FindAsync()
fonction.La Connexion/Déconnexion parties du site par défaut semblent fonctionner très bien, après ces ajustements. Je vais quitter cette réponse ici pour un certain temps avant que je l'accepte au cas où quelqu'un peut me dire pourquoi je ne devrais pas faire de cette façon.
ClaimTypes
enum pour générer le schéma Uri: plus précisément,ClaimTypes.NameIdentifier
qui va générer"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"
, et. al.J'ai créé un RavenDB mise en œuvre de la nouvelle ASP.NET MVC 5 de l'Identité et de le lancer comme un package NuGet. Cela peut fonctionner pour vous.
http://www.nuget.org/packages/RavenDB.AspNet.Identity/
C'est un peu bêta, mais je suis de l'utiliser dans un projet réel.
Voici la Projet GitHub et un filetage court sur le RavenDB groupe de discussion à ce sujet.
Je l'espère, il n'est pas question que je post un Q/a, ici, qui ne rentre pas dans la section des commentaires
@Katstevens est-il juste de vous: mon coéquipier a trouvé cette solution et l'utiliser pour longtemps, donc je le mettre en œuvre dans ma propre application, mais depuis la getUserId n'a pas travaillé, j'ai trouvé ce qui est ici, et puis-je ajouter de la demande à mes données personnalisées, sur Mondiale.aspx méthode de démarrage:
Oui, il fonctionne, Mais il il une bonne chose à faire comme ça?
où dois-données viennent, où devrait-il se produire? ETC....
les données sont irremplaçables? et sécurisé?