18

コントローラで認証アクションを呼び出せるようにしたいのですが、成功した場合は、認証されたユーザーの詳細をセッションに保存します。

ただし、RestSharpをデタッチされたクライアントとして使用しているため、セッション内でリクエストを保持する方法がわかりません。承認が成功したときに、どういうわけかサーバーからキーを取得する必要があります。その後、呼び出しごとに、セッションに保存されているキーでキーを確認します。

RestSharpのRestClientがCookieを正しく設定して今後のすべてのリクエストを送信し、サービス呼び出し内でセッション変数を正しく取得できるようにするにはどうすればよいですか?

私はHttpFactoryでCookieコンテナを調べてきましたが、これに関するドキュメントはどこにもありません。

4

2 に答える 2

39

誰かが同様の問題を抱えている場合、単純な「リクエストごとにCookieを保存する」問題では、上記は必ずしも必要ではないことに注意してください。上記のJaffasのアプローチは機能しますが、CookieStoreをRestClientに接続するだけで、Cookieを自動的に保存できます。専用のCookieのみを保存したい場合があるため、これがすべての人にとっての解決策ではないことを私は知っています。一方、RESTクライアントのテストが楽になります。(私は簡単にするためにJaffas変数を使用しました):

        CookieContainer _cookieJar = new CookieContainer();
        var client = new RestClient("http://<test-server>/letteron"); //test URL
        client.CookieContainer = _cookieJar;
于 2012-05-13T10:31:28.537 に答える
13

私は最終的にこれを解決しました。基本的にCookieコンテナを作成し、応答からのセッションCookieをCookieコンテナに追加します。今後のすべてのリクエストには、このCookieが含まれます。

 var sessionCookie = response.Cookies.SingleOrDefault(x => x.Name == "ASP.NET_SessionId");
 if (sessionCookie != null)
 {
    _cookieJar.Add(new Cookie(sessionCookie.Name, sessionCookie.Value, sessionCookie.Path, sessionCookie.Domain));
 }
于 2012-01-25T11:38:11.263 に答える