Linq2Rest认证Asp.net WebApi

时间:2012-11-02 10:51:49

标签: linq authentication asp.net-mvc-4 asp.net-web-api

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

更新:    我只使用通常的表格授权。     这就是GET方法的样子

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

1 个答案:

答案 0 :(得分: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;
    }
}