2012-02-06 7 views
0

私のコードのどこにでもSessionを使用しないように頼まれました。現在、私はユーザーをWebサービスインターフェイスに認証し、アクセストークン(オブジェクト)をセッションに格納し、後続の要求に再利用しています。それをサーバー側に保存するにはどうすればよいでしょうか?私はセキュリティ上の理由からクライアントに送信したくありません。jquery ajaxコール - セッションを使用する代わりに?

ここではコードです -

[WebMethod] 
    public static Person LoadPerson(int i) 
    { 
     var person = new Person(); 
     person.Name = "Bob"; 
     var userToken = SetupWebserviceUser(); 
     HttpContext.Current.Session["UserToken"] = userToken(); 
     // Call web service, get data. 
     return person; 
    } 
+0

なぜセッションを使用できないのですか?これは、このデータを保存するのに最適な場所のようです。もう1つのオプションは、トークンをデータベースまたはサーバー上のメモリに保存し、クッキーを使用してユーザーを追跡しますが、これはセッションが.NETでどのように動作するかです。 – Joel

+0

アプリケーションはウェブファーム上のSharepointサイト。私の管理者は私にセッションの使用を避けるように頼んだ。 – tempid

答えて

0

何だろう、サーバー側でそれを保存するのに適した場所 -

var person; 
    $.ajax({ 
     url: 'Default.aspx/LoadPerson', 
     data: JSON.stringify({ id: 1 }), 
     type: 'POST', 
     contentType: 'application/json;', 
     dataType: 'json', 
     success: function (result) { 
      person = result.d; 
     } 
    }); 

私のWebサービスメソッドは次のようになりますか?

データをクライアントまたはseesionに保存したくない場合は、あまりにも多くのオプションが残っています。
私が考えることができる唯一のオプションは、DataBase \ static変数\ XMLです。

+0

私はそれを静的変数に入れるとデータを呼び出し間で永続化しますか?編集:それはありません!私はアクセストークンオブジェクトの3つのプロパティを必要としました。私は3つの静的変数を作成し、値を設定し、それ以降の呼び出しでそれにアクセスできました。今、このデータをどのように処分するのですか? – tempid

+0

スタティックは潜在的に危険な可能性があります。ウェブアクセスはマルチスレッドであり、最初のユーザーがアクティブな間は許可しないでください。 – JamieSee

+0

私は、ページがロードされるときに一度だけ呼び出されるグローバルロード関数を持っています。私は明示的にその関数の最初にnullに変数を設定しました。今はうまくいく。ありがとう! – tempid

関連する問題