2010-05-19 4 views
0

Je développe une application silverlight 3 en utilisant les services WCF RIA. J'utilise la classe AuthenticationBase pour gérer mon authentification. Comme je le comprends sous le capot, cela utilise les bibliothèques d'authentification ASP .NET. Lorsque je me connecte au site, le service d'authentification gère l'état de connexion de sorte que si je ferme le site et l'ouvre immédiatement, je suis toujours connecté selon le serveur. Lorsque la page Web est actualisée ou fermée et rechargées je peux appeler la méthode,Comment stocker l'état dans les services RIA WCF Silverlight

WebContextBase.Current.Authentication.LoadUser()

Et il retourne au service d'authentification (en cours d'exécution sur le serveur) et les chiffres savoir si Je suis toujours connecté au site. Si un délai d'attente s'est produit, la réponse sera non. Si c'est le cas, je peux montrer une boîte de dialogue de connexion. Le problème que je veux résoudre est que le service d'authentification consomme le mot de passe, et je ne pourrai plus jamais récupérer ce mot de passe.

Si l'utilisateur se connecte au site, je souhaite stocker le mot de passe sur le serveur et renvoyer un jeton au client pour qu'il corresponde à ce mot de passe. J'ai d'autres services sur le serveur qui ont besoin de ce mot de passe.

Alors, où dois-je stocker ce mot de passe sur le serveur? Comment cela peut-il être fait? Comment l'état de la banque d'authentification WCF se trouve-t-il?

+0

Est-il possible d'implémenter une classe statique par exemple? C'est ce que j'ai essayé et cela semble fonctionner. Je me suis assuré d'utiliser le verrouillage afin que les données ne puissent pas être modifiées par plus d'un client à la fois. – peter

Répondre

1

S'il vous plaît pouvez-vous développer un peu, pourquoi essayez-vous de récupérer un mot de passe pour un utilisateur non authentifié?

Vous pouvez utiliser le stockage isolé et stocker les détails, mais généralement, le stockage des mots de passe type de défaites le point entier n'est-ce pas?

+0

Ce ne sont pas des utilisateurs non authentifiés. Ils ont déjà été authentifiés, et leur session devrait rester ouverte pendant 20 minutes. C'est exactement comme si vous quittez Gmail sans cliquer sur le lien «Déconnexion», et que vous revenez tout droit. Cela va expirer avec le temps. – peter

+0

Voilà comment fonctionnent les pages ASP .NET standard. Un utilisateur restera authentifié pendant 20 minutes. – peter

+0

Le jeton que je passe au client est également stocké dans un cookie, qui expire également après 20 minutes. – peter