2009-12-01 35 views
4

J'ai une application Flex-WebORB-Asp.NET. Lorsque vous vous connectez, il y a une AuthenticationHandler qui implémente une interface WebORB:Asp.NET Principal WebORB HttpHandler

IPrincipal CheckCredentials(string username, string password, Request message); 

donc je crée un principal et le retourner. WebORB utilise le principal pour vérifier l'authentification et l'autorisation des appels de méthode à distance.

var principal = new GenericPrincipal(new GenericIdentity(user.id.ToString()), new[] { "admin" }); 
return principal 

maintenant, à ce moment, si je vérifie ce que HttpContext.Current.User.Identity est, il est un WindowsIdentity.

Jusqu'ici tout va bien. Lorsque plus tard, un appel à distance se fait par WebORB, je reçois l'identifiant de l'utilisateur connecté en appelant:

Thread.CurrentPrincipal.Identity.Name 

donc je suppose que WebORB assure l'identité du fil est réglé à chaque appel à distance.

Le problème est que lorsque j'appelle un HttpHandler (pour récupérer une image), j'essaie également d'obtenir l'ID de l'utilisateur connecté avec Thread.CurrentPrincipal.Identity.Name, mais cela ne fonctionne pas. Probablement parce qu'avec un HttpHandler, WebORB n'intervient pas.

Comment voulez-vous résoudre ce problème afin que je puisse obtenir l'ID de l'utilisateur connecté de la même manière dans les deux cas? Mettez-le dans un objet de session? Pouvez-vous changer le HttpContext.Current.User.Identity? Est-ce que le HttpContext.Current.User.Identity ne devrait pas être le même que le Thread.CurrentPrincipal.Identity.Name? Ps: Les utilisateurs ne sont pas dans Active Directory.

ps: Les utilisateurs ne sont pas dans Active Directory.

Répondre