2012-03-01 13 views
1

UpdatePanelを使用する予定ではなく、WebMethodWebServiceとなるはずです。このAJAXアプローチは初めてです。私の主な問題は認証です。Webmethod認証が渡されません

ページが入力されたか、ポストバック要求が作成されると、すべてが正常に動作します。認証が正しく渡され、私はThread.CurrentPrincipal.Identityにアクセスしてそこから自分のユーザーIDオブジェクトを取得できます。

私は私のページにWebMethodを呼び出すしようとすると、しかし、これは変更されます。呼び出しはサーバーに正しく渡され、スレッドからユーザーIDを取得しようとするまではすべて正常に機能しているようです。その後、私は実際にはAnonymousのユーザーになるだけです。 webmethodでセッションを有効にしても、あまり役に立たないようです。

この問題を引き起こす可能性がありますし、それを解決する方法をどのような任意のアイデア?誰かが、リクエストと共に認証クッキーを渡す必要があると言いましたが、どうすればいいでしょうか?

ご協力いただければ幸いです。

編集:

いくつかの明確化とコード:

私のアプリケーションは、標準asp.netで書かれています。レガシーコードの深い研究の後、私はすべての認証が他のすべてのページが継承しているいくつかの基本クラスで行われていることを知りました。ページがロードされるたびに、ユーザープリンシパルはHttpContext.Current.Session("...")から取得されます。私はこれが良い解決策から遠いと思っていますが、私は今それに固執する必要があります。問題は、のため、WebMethodは全面ページライフサイクルを開始していませんでした。セッションからユーザーデータを取得するメソッドを呼び出すことで、今すぐ修正しました。

私は、これは正しく作成することができ、どのような問題は、セッションベースの認証の結果である可能性がありますどのようにいくつかのアイデアを取得したいと思います。

PageMethods.SomeMethod(parameter, SuccessDelegate, FailureDelegate); 

これは私がWebMethodsと今呼び出す方法です。私はそれがすべての必要なクッキーを通過していると仮定します、そうですか?

答えて

0

問題は、ユーザーを処理するレガシーコードにあります。適切なユーザデータをハンドリングスレッドに割り当てる特殊関数を呼び出す必要があります。最善の解決策ではありませんが、それは時にはレガシーコードと同じです。あなたは何を行うつもり?

1

どのようにメソッドを呼び出すのか、どのような方法で呼び出すのかによって異なります。 メソッドを使用してJqueryメソッドを呼び出すと、FormsAuth/Session Cookieを含むすべてのCookieが、必要に応じて依然として認証される必要があります。ベアメタル技術は、単にクッキーを押し上げていない軽量呼び出しを行う可能性があります...これを監視するための一つの方法は、Firebugよう要求し、ブラウザベースの開発プラグインを観察し、発生しているかを見ると、あなたのJSコードを修正するFiddlerを使用することです適切に。

個人的には、新しいプロジェクトを開始していて、Webアプリケーションを超えてサービスを公開する必要がない場合は、ASP.NET MVCを見て、Jquery/client-sideをあなたの認証を無料で受け取りましょう。私は最近、WCF JSONエンドポイントといくつかの不可避的な痛みを使用してsimliarを作成しました。その後、MVCを見て、ちょっと蹴った...

+0

私はこの問題についてさらに詳しい情報を得ることができたので、質問を編集してその詳細を含めました。問題はクッキーではなく、レガシーコードにあるようです。 – Pako

関連する問題