4

Flex-WebORB-Asp.NET アプリケーションがあります。ログインすると、WebORB インターフェイスを実装する AuthenticationHandler があります。

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

そこで、プリンシパルを作成して返します。WebORB はプリンシパルを使用して、リモート メソッド呼び出しの認証と承認をチェックします。

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

さて、この時点で、何が何でHttpContext.Current.User.Identityあるかを確認すると、それは WindowsIdentity です。

ここまでは順調ですね。後で WebORB を介してリモート呼び出しが行われると、次のように呼び出して、ログインしているユーザーの ID を取得します。

Thread.CurrentPrincipal.Identity.Name

したがって、WebORB は、リモート呼び出しごとにスレッドの ID が設定されていることを確認していると思います。

問題は、(画像を取得するために) HttpHandler を呼び出すときに、ログインしているユーザーの ID も で取得しようとしましたThread.CurrentPrincipal.Identity.Nameが、うまくいかないことです。おそらく、HttpHandler では WebORB が動作しないためです。

どちらの場合も同じ方法でログインしているユーザーの ID を取得できるように、これをどのように解決しますか? セッションオブジェクトに入れますか?を変更できますHttpContext.Current.User.Identityか? HttpContext.Current.User.Identityは と同じであってはなりませんThread.CurrentPrincipal.Identity.Nameか?

ps: ユーザーは Active Directory にありません。

4

1 に答える 1

1

いいえ、違います。

于 2011-11-18T23:49:58.207 に答える