2017-09-14 1 views
2

Je suis en train d'essayer de mettre en place un serveur pour un projet personnel. J'utilise ServiceStack.Core avec une base de données graphique Neo4j comme couche de persistance.sur mesure IUserAuthRepository avec Servicestack

Je voudrais configurer l'authentification utilisateur à l'aide de ma base de données graphique comme référentiel auth utilisateur. Pour autant que je sache, il n'y a pas d'implémentation de IUserAuthRepository pour Neo4j, ce qui signifie que je vais devoir créer le mien. Malheureusement, j'ai trouvé très peu de documentation sur cette interface et comment l'implémenter correctement.

Donc, j'ai quelques questions:

  • -ce qu'il existe une sorte de tutoriel ou d'autres documents sur la façon de mettre en œuvre correctement mon propre IUserAuthRepository?
  • La méthode CreateUserAuth est censé prendre un mot de passe. Que se passe-t-il si un utilisateur se connecte en utilisant Facebook ou un autre service et n'a pas de mot de passe?
  • Ne serait-il plus judicieux d'utiliser simplement Redis pour l'authentification (avec RedisAuthRepository), en utilisant le userAuthId pour rechercher des utilisateurs dans mon graphique db? Y a-t-il des pièges majeurs à faire quelque chose comme ça? Si je fais cette route, comment puis-je me connecter au processus d'enregistrement pour m'assurer que je crée un utilisateur dans la base de données graphique à chaque fois qu'un nouvel utilisateur est enregistré?

Répondre

1

Il n'y a pas de documents sur la mise en œuvre IUserAuthRepository, il est une interface avec beaucoup de reference implementations. Le plus simple serait de suivre la mise en œuvre qui fonctionne de manière similaire à neo4j.

Le tableau maître IUserAuthRepositorystores 2 tables, UserAuth et UserAuthDetails table enfant qui est l'endroit où tous les fournisseurs de OAuth comme Facebook maintiennent les informations reçues lors de l'authentification avec eux. Le champ de mot de passe est utilisé pour CredentialsAuthProvider.

Vous pouvez gérer différents événements lors de l'inscription et l'authentification avec le Session and Auth Events.

+0

Auriez-vous savoir si 'IUserAuth.Id',' 'IUserAuthDetails.Id' et IUserAuthDetails.UserAuthId' sont utilisés partout en dehors de l'utilisateur Auth référentiel? Un identifiant interne auto-incrémenté ne fonctionne pas vraiment bien avec Neo4j, pour un certain nombre de raisons. Il serait plus logique d'avoir 'UserAuth' indexé par un UUID, et d'atteindre les nœuds' UserAuthDetails' en traversant le graphe du noeud 'UserAuth' (et vice versa). Je peux accomplir cela en définissant 'UserAuth.RefIdStr' à mon UUID et en ignorant tous les autres champs' Id', mais je crains que d'autres codes Servicestack puissent dépendre de ces valeurs Id en quelque sorte – Katie