1

フォーム認証を持つ Asp.net WebApi を使用しています。[Authorize] 属性で保護されたコントローラーへの POST リクエストの作成に成功しました。これは、最初に承認コントローラーに移動する HttpClient を使用して、Cookie を保存し、クライアントがそれを他の要求に使用します。GET リクエストには、JsonRestClient を使用するLinq2Restライブラリを使用したいのですが、それを認証に使用する方法がわかりません。そのトピックに関する質問や議論が見つからなかったことに非常に驚いています。このライブラリのソースを変更することが、この問題を解決する唯一の方法ですか?

更新: 通常のフォーム承認のみを使用します。GETメソッドはこんな感じ

    [Authorize]
    [Queryable]
    public IQueryable<Invoice> GetInvoices()
    {
        return repository.GetInvoices();
    }
4

1 に答える 1

1

私はこの問題を解決するために独自のRestClientを作成しましたが、それが最善の解決策であるかどうかはわかりませんが、これは私にとってはうまくいくようです。ここで、currentHttpClientは、すでに認証Cookieを持っているオブジェクトです。

internal class PinJsonRestClient : JsonRestClient, IRestClient
{

    private readonly HttpClient currentHttpClient;

    public PinJsonRestClient(Uri uri) : base(uri)
    {
    }

    public PinJsonRestClient(Uri uri, HttpClient currentHttpClient) : base(uri)
    {
        this.currentHttpClient = currentHttpClient;
    }

    public new Stream Get(Uri uri)
    {
        var result = currentHttpClient.GetStreamAsync(uri).Result;
        return result;
    }
}
于 2012-11-02T13:17:13.410 に答える