2012-11-02 151 views
1

我正在使用具有表單授權的Asp.net WebApi。我成功地創建了對控制器的POST請求,該請求通過使用HttpClient的[Authorize]屬性進行保護,該控制器首先訪問授權控制器,該控制器存儲cookie並將客戶端用於其他請求。對於GET請求,我想使用Linq2Rest庫,它使用JsonRestClient,但我不知道如何將它用於授權。我很驚訝,我找不到有關該主題的任何問題或討論。修改這個庫的來源是解決這個問題的唯一方法嗎?Linq2Rest身份驗證Asp.net WebApi

更新: 我只使用通常的形式authorizasion。 這是GET方法的樣子

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

將[Authorize]屬性添加到控制器的GET方法時會發生什麼? IModelFilter是否在授權前抓取請求?請提供一些代碼以顯示您已經定義了GET方法。 –

+0

@KevinJunghans添加了更新 – Lanayx

回答

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; 
    } 
}