0

Je veux laisser l'utilisateur automatiquement re-connexion dans mon application Flex, qui utilise l'authentification de baseModification des informations d'identification sur côté client pour l'authentification de base sur Flex

D'ailleurs, je l'ai noté ce StackOverflow question, qui est pertinent , mais n'aborde pas la question de la déconnexion côté client.

Par exemple, après que l'utilisateur A se connecte, l'utilisateur B vient au navigateur, va à l'écran de connexion (peut-être dans un nouvel onglet) et se connecte.

Cela devrait signifier que j'envoie les informations d'identification de l'utilisateur B dans les en-têtes HTTP, et que ceux-ci étant différents de ceux de l'utilisateur A, le serveur note le fait et crée une nouvelle session distincte.

Toutefois, le proxy HTTP de Flex intercepte l'en-tête et ignore ces nouvelles informations d'identification. Flex offre un moyen de dire au serveur de se déconnecter, et le code de connexion Flex peut invoquer cela à chaque fois avant d'envoyer des informations d'identification, mais cela semble être une solution de contournement laide. Je veux pouvoir faire ce côté client. Je pourrais également utiliser un en-tête non standard pour l'authentification de base (puisque je contrôle aussi l'authentification côté serveur), mais cela semble aussi une solution de contournement laide.

Existe-t-il un moyen de terminer la session du côté client à partir du code Flex? C'est possible à partir de JavaScript, par exemple.

Et y a-t-il un moyen de travailler directement avec les cookies côté client, comme je le peux en JavaScript?

Je comprends que certaines des limitations peuvent être causées par des considérations de sécurité, mais toute ma communication est au serveur "domestique", donc il devrait être possible d'éviter les restrictions.

Répondre

1

Vous posez ici quelques questions différentes.

Vous ne pouvez pas mettre fin à une «session» d'authentification de base manuellement en tant que telle (du moins à ma connaissance); Au mieux, vous pouvez vous authentifier contre un type de domaine basic-auth variable, qui peut ou non fonctionner pour vous, mais sinon, vous êtes en quelque sorte bloqué avec la première session authentifiée pendant la durée de l'instance du navigateur. En règle générale, ce n'est pas la meilleure solution, à moins d'être certain que l'utilisateur est propriétaire de la machine ou de pouvoir fermer le navigateur après chaque session.

Cela laisse au moins deux autres options, alors. La première consiste à envoyer vos informations d'identification avec un objet URLRequest (le message que vous avez cité, que j'ai écrit, montre comment faire cela), et d'avoir votre réponse HTTP pour vous indiquer que les informations d'identification ont été acceptées - par exemple un GUID, peut-être, généré et stocké dans une table de session (au sens de la base de données) sur le serveur, peut-être. Ensuite, sur des requêtes HTTP successives, vous pouvez envoyer ce GUID dans un en-tête HTTP, ou en tant que valeur dans chaque requête GET ou POST (de la même manière que Facebook traite leurs clients API, par exemple), vérifiez la rapidité de cette valeur sur le serveur, et si tout va bien, continuez. Pour vous déconnecter, vous devez simplement envoyer une demande d'invalidation de ce GUID, effectuer le nettoyage nécessaire sur le serveur et dans votre application Flex, et tout devrait bien se passer: l'utilisateur suivant peut s'asseoir, se connecter, authentifier, et le processus continue.

Une autre façon serait de travailler directement avec les cookies. Les mécanismes des cookies sont en réalité gérés pour vous dans Flex, puisque tout est transmis par le navigateur en votre nom.Par exemple, si vous envoyez un URLRequest avec un nom d'utilisateur et un mot de passe, et que le serveur répond avec un cookie quelconque, chaque requête que vous effectuez par la suite va empaqueter et envoyer le même cookie, donc dans la plupart des cas analyser la réponse initiale du serveur (pour définir l'état de votre application Flex), supposer la présence continue du cookie, et quand il est temps de se déconnecter, envoyer un URLRequest pour se déconnecter, tuer le cookie sur le serveur, sur le statut = 200 faites votre nettoyage Flex-app, et ainsi de suite. Accéder directement aux valeurs des cookies n'est pas la chose la plus simple au monde; vous pouvez utiliser ExternalInterface comme un proxy pour JavaScript (des exemples de ceci en ligne et ici sur SO, j'en suis sûr), et les obtenir de cette façon, mais il y a de bonnes chances que vous n'ayez même pas à faire cela.

Espérons que cela aide. Bonne chance!

0

Notez également this post, qui détaille une partie de l'incroyable distorsion que Flex ajoute aux requêtes HTTP.

Questions connexes