J'ai créé une application Web en angulaire 2 pour le côté client et Pour le côté client, j'ai généré le projet avec Je veux intégrer Le processus d'authentification fonctionne correctement lorsque vous atteignez le serveur directement (sans le client). P>
Cependant, je ne parviens pas à accéder au Comment dois-je implémenter correctement l'authentification lors de l'utilisation de services distincts sur le serveur et le client? P> Nodejs code> avec
EXPRESS code> Cadre pour le côté serveur. P>
angular-cli code> qui fonctionne sur un
lite-serveur code>, mon client et mon serveur fonctionnent sur 2 services différents. p>
ADFS code> authentification.
Pour mettre en œuvre l'authentification, j'utilise
Passport-saml code> package.
Il y a un middleware dans mon
API code> qui nécessite un utilisateur d'authentifier. P>
API code> via le
@ angulaire / http code>.
J'ai essayé un simple
obtenir la demande code> à partir du serveur (avec le middleware dans le point final) et, par conséquent, je reçois la page d'authentification sans redirection (je ne pense pas que ce soit le problème de base, mais la mise en œuvre réelle est). p>
3 Réponses :
Vous n'abandonnez pas beaucoup de détails sur la réponse échouée lorsque le client a effectué le serveur. Était-ce un 400? 401? 404? 500? Avez-vous eu une erreur de Cors?
Pourquoi utilisez-vous obtenir votre point d'extrémité de connexion? Vous devez afficher des informations d'identification dans la charge utile postale? P>
Quoi qu'il en soit, dans votre code angular2, vous devez disposer d'un service d'authentification avec une méthode de connexion. La méthode de connexion doit faire quelque chose comme .. p> Vous pouvez alors vous abonner à l'observable renvoyé par la méthode de connexion et si tout est bon routeur.navigater code > à la page d'accueil ou si ce n'est pas allée bien afficher des messages d'erreur de connexion. p> p>
Bonjour, je faisais également face au même problème que mon projet angulaire a été hébergé sur 4200 ports. et mon nœud sur 3000 ports. C'est difficile à mettre en œuvre un passeport lorsque nous avons 2 ports en cours d'exécution.
Étape 1
Faire des projets angulaires statiques en faisant une construction NG dans le dossier public.
Assurez-vous que Ceci permettra à votre projet angulaire accessible via le port de nœud. P> Étape 3:
Maintenant, nous pouvons ajouter le bouton de connexion passeport dans l'interface utilisateur.
et donnez l'URL Ce n'est pas des moyens explicatifs de me demander les doutes. p> p> angular-cli.json code> a
* "surpasser": "../public".*<
/pode ">>
Maintenant, nous pouvons utiliser le même port de nœud pour accéder aux racines angulaires Veuillez ajouter un code ci-dessous dans votre nœud app.js p> twitter code> p>
Votre solution fonctionnerait, mais mon objectif était de séparer le client du serveur et de ne pas les combiner ensemble sur le même port. Ce que j'ai fait est que j'ai utilisé iframe code> pour connecter le client directement à la page d'authentification du serveur, c'est-à-dire / auth / authentification, puis après l'authentification réussie de l'utilisateur, j'ai utilisé le moteur EJS pour rendre les données utilisateur dans le Page et le transmis au client (en dehors de l'iframe) avec parent.postMessage. De cette façon, je peux garder le client et le serveur sur différents ports et authentification des archives avec passeport.js.
Je suis également à la recherche d'un client et d'un serveur séparé. La combinaison du client et du serveur sur le même port n'est pas une solution pour moi aussi.
Définissez des URL séparées pour UI et serveur dans ..src / environnements / environnement.ts dans le nœud app.js p>
PASSPORT.JS sera-t-il CODE> Traitez-le comme le même domaine? et qu'en est-il de la session
code>.
Je ne suis pas sûr de ça. Je l'ai utilisé dans mon application avec angular2 et nœud.js qui fonctionne bien.
Avez-vous écrit n'importe quel code permettant de permettre aux demandes de domaine (Cors) dans votre express code>
app.js code> fichier?
app.use (fonction (req, res, résolution suivante) {res. red.header ("Access-Control-Autory-Origine ',' * '); Res.Header (" Access-Control-Autory-Headers' ", ' Origine, X-demandé-with, type de contenu, accepter, autorisation '); res.sethader ("Access-Control-Autory-Méthodes", "Get, Post, Mettez, Supprimer'); res.Setheader ('" Access- Control-max-Âge ', 60 * 60 * 24 * 7); suivant ();}); code>
Je ne pense pas que cela résoudra le vrai problème. Le problème est que express-session code> fonctionne correctement dans le même domaine (client 3000 et serveur également 3000) mais dans le domaine différent (client 4200 et serveur 3000), il ne fonctionne pas bien. Il génère une nouvelle session code> code> sur chaque nouvelle demande et ne persiste pas la même session pour l'authentification de l'utilisateur.
@ Ron537_ Avez-vous eu une solution utile?