Donc, j'ai une application qui a deux types d '«utilisateur»: les humains et les appareils.Utiliser le passeport pour autoriser deux types d'utilisateur complètement différents à s'authentifier
L'utilisateur se connecte en utilisant le nom d'utilisateur/mot de passe (stratégie locale). Les périphériques se connectent à l'aide d'un certificat.
Ce sont des choses très différentes, donc ce n'est pas le même que d'avoir un accès spécial pour les utilisateurs d'administration par rapport aux utilisateurs normaux. Je ne peux pas avoir une seule table db pour toutes les entités qui peuvent se connecter.
Je comprends comment je peux avoir plusieurs stratégies d'authentification (je différencie simplement par point final), mais je suis un peu perplexe sur la façon de gérer la désérialisation de le jeton pour les demandes entrantes. Express/passeport semble permettre seulement une fonction deserializeUser que je peux écrire. En outre, je voudrais découpler ces deux types afin que je puisse garder les dispositifs et les humains dans leur propre code plutôt que d'avoir une fonction de désérialisation monolithique qui les trie.
Idéalement, je serais en mesure d'avoir deux fonctions deserializeUser et la droite est appelée en fonction du format de jeton, mais je ne vois pas la meilleure façon de le faire.
Des suggestions?
Ce que je ne suis pas sûr de sa façon de désérialiser. Il me semble que j'ai besoin d'un seul désérialiseur, plutôt que de pouvoir enchaîner deux d'entre eux et voir lequel peut le faire. –
@JimBaldwin, Vous n'avez pas besoin de chaîner, dans chaque requête vous avez une longueur de jeton alors vérifiez la longueur dans le middleware pour deserializeUser. –