我正在使用具有表单授权的Asp.net WebApi。我已成功创建了对控制器的POST请求,使用HttpClient通过[Authorize]属性进行保护,该HttpClient首先进入授权控制器,授权控制器将cookie存储到其中,客户端将其用于其他请求。对于GET请求,我想使用Linq2Rest库,它使用JsonRestClient,但我不知道如何使用它进行授权。我很惊讶我找不到任何有关该主题的问题或讨论。修改这个库的来源是解决这个问题的唯一方法吗?
更新: 我只使用通常的表格授权。 这就是GET方法的样子
[Authorize]
[Queryable]
public IQueryable<Invoice> GetInvoices()
{
return repository.GetInvoices();
}
答案 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;
}
}