0

L'architecture du projet Web est la suivante:Comment autoriser uniquement les utilisateurs authentifiés (connecté) pour accéder à un service reposant de printemps

  1. Il y a un service Web reposant Spring MVC en cours d'exécution au service HTTP API reposant .
  2. Un service express node.js est en cours d'exécution pour servir des pages Web avec AngularJS. Il offre également un service HTTP resful pour l'appel AngularJS, qui appelle basiquement l'API Spring Restful et renvoie le résultat à l'interface frontale AngularJS.

Le flux d'appels est:

  1. Les AngularJS sur la page initient des appels API pour le service express réparateur.
  2. Ensuite, le service express appelle le service reposant Spring MVC pour obtenir les résultats nécessaires.
  3. Le service express renvoie le résultat à l'extrémité avant AngularJS. Avant de revenir à Angular, il peut post-traiter les données afin de répondre aux besoins de front-end.

Comment puis-je autoriser uniquement les utilisateurs qui se sont connectés à la fin avant (également en appelant le login API RESTful) pour faire des appels suivants d'autres services offerts par le service reposant Spring MVC? La chose délicate est que l'extrémité avant (AngularJS + Express qui sert la page et fournit également l'appel de service à Spring Restful) et l'extrémité arrière (service Spring Restful) sont des parties séparées. Donc, je ne suis pas sûr que Spring Security puisse faire le travail. Ou puis-je utiliser d'une autre manière? Vos pensées seront grandement appréciées.

Répondre

0

Dès qu'un utilisateur se connecte au système, vous pouvez ajouter son identifiant de session dans un cache (variables au niveau de l'application) du côté Ressort. Renvoyez maintenant cet ID de session à l'utilisateur après qu'il s'est connecté. L'utilisateur côté client doit stocker cet ID de session dans son webstorage (sessionstorage ou localstorage). Maintenant, pour chaque appel de service de repos, transmettez l'identifiant de session avec les données au serveur. Du côté du ressort lors de la réception de la requête, vérifiez d'abord l'ID session, puis validez l'ID de la session avec les ID stockés dans le cache.

De cette façon, vous pouvez vous assurer que seuls les utilisateurs connectés accèdent au service de repos.

+0

Merci, @Upesh M. Le service de connexion est fondamentalement une API reposante appelée avec le nom d'utilisateur et mot de passe. Alors, comment puis-je générer le "ID de session" comme vous l'avez mentionné? – blue123

+0

normalement le conteneur de servlet ouvre un httpSession quand votre première demande arrive, en java, vous pouvez utiliser request.getSession(). GetId() pour obtenir l'ID de session. –

+0

@ blue123 Ou bien, puisque le conteneur de servlet maintient une session pour toutes les requêtes provenant du même utilisateur, quand vous authentifiez l'utilisateur, ajoutez un userVO à son sessionObject. Maintenant, dans les demandes suivantes, vérifiez si un utilisateur valideVO est présent dans sa session. –