2010-03-10 2 views
1

J'utilise Flex 4 (beta2) avec Ruby on Rails 2.3.5 et j'utilise RubyAMF pour transférer des données entre Flex et le serveur.Gestion des cookies avec Flex pour l'authentification

J'ai configuré Authlogic sur le côté Rails pour l'authentification.

Je ne savais pas quelle était la meilleure méthode pour gérer les sessions utilisateur. Je sais que cela se fait automatiquement avec Rails en envoyant l'identifiant de session avec le cookie que Rails utilise pour authentifier l'utilisateur.

Que suggérez-vous la meilleure façon de le faire avec Flex?

Je pensais que des deux options: 1.
aller chercher manuellement le cookie du navigateur, puis déterminer notre façon d'envoyer au serveur que chaque demande je vous envoie.
2. sessions Handling expiration et le débit sur le côté Flex expirant manuellement par la session

Avez-vous d'autres suggestions ou recommandations?

Merci,

Tam

Répondre

2

Les demandes de réseau dans Flash utilisent la pile de mise en réseau du navigateur pour que les cookies dans Flex fonctionnent comme n'importe quelle autre application de navigateur. Habituellement, l'authentification dans Flex n'est pas différente de celle avec une application Web standard. Envoyer des informations d'identification au serveur avec lequel il est corrélé avec un ID de session.Chaque requête suivante (RemoteObject, HTTPService, etc.) envoie également cet identifiant de session.

1

Nous avons vu que le plug-in flash propage le cookie de session lorsque nous BlazeDS (http) appelle à distance

1

Dans le passé, nous avons travaillé avec BlaseDS et HTTPServices. Dans les deux cas, la demande est envoyée au serveur via HTTP. Notre pile de serveurs est Java (JBoss pour être spécifique).

Nous avons remarqué que le client Flex utilisé pour envoyer les informations de session avec les demandes au serveur. Nous avons utilisé la même information pour stocker et récupérer Principal sur le serveur.

Dans un cas, nous avons propagé le jeton au client. Ceci afin d'éviter les soumissions multiples pour les mêmes requêtes - donc nous avons utilisé l'approche de soumission HTML courante de la génération de jeton où chaque réponse porte un nouveau jeton et le client doit le renvoyer au serveur pour l'exécution de la requête suivante. Pour l'expiration de la session, il y a de fortes chances qu'un utilisateur travaille sur le client pour des besoins locaux et ne travaille pas avec le serveur, ce qui peut avoir causé une expiration sur le serveur sans affecter le serveur. Dans ce cas, nous avons désactivé l'expiration de la session sur le serveur et écrit un code personnalisé pour gérer les événements - clavier et souris sur le client Flex. Si l'application n'a pas été utilisée pendant une durée spécifiée, le client Flex expirera les deux sessions, à savoir locale et serveur.

1

Que suggérez-vous la meilleure façon de procéder avec Flex?

$loggedIn=Authenticate::isAuthenticated(); 
if(!$loggedIn)return false; 
$user=Authenticate::getAuthUser(); 

d'abord authentifier l'utilisateur et s'il est connecté créer la session. Incluez ceci dans votre fichier PHP ou Ruby, et vérifiez-le. Envoyez l'ID de session à Flex pour conserver l'état et définissez l'heure d'expiration de votre session.

Le code ci-dessus vérifie si l'utilisateur est authentifié pour accéder aux fichiers de classe PHP ou ruby.