1

我正在使用具有表单授权的 Asp.net WebApi。我已经成功地创建了对控制器的 POST 请求,该请求通过使用首先进入授权控制器的 HttpClient 使用 [Authorize] 属性进行保护,授权控制器将 cookie 存储到它,客户端将其用于其他请求。对于 GET 请求,我想使用Linq2Rest库,它使用 JsonRestClient,但我不知道如何使用它进行授权。我很惊讶我找不到关于该主题的任何问题或讨论。修改这个库的源代码是解决这个问题的唯一方法吗?

更新:我只使用通常的形式授权。这就是 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 回答