2013-02-28 23 views
2

即時嘗試爲我的IIS承載的WebAPI服務實現基本的HTTP認證。我試圖使用cookie來發送服務器和客戶端之間的用戶相關數據。當客戶端是Firefox時,此代碼似乎可以工作,但如果我使用IE或Chrome,則Cookie不會發回服務器。在HTTP基本認證中使用cookie的正確方法

我有以下幾點。

林添加cookie來響應消息像這樣...在HttpModule.AuthenticateRequest事件處理器...

HttpApplication app = sender as HttpApplication; 

HttpResponse response = app.Context.Response; 
HttpRequest request = app.Context.Request; 

HttpCookie c = new HttpCookie("MyCookie", "Hellou!"); 
c.Expires = DateTime.Now.AddDays(1); 
c.Domain = request.Url.Host; 
c.Path = "/"; 

response.Cookies.Add(c); 

...或在控制器POST操作:

CookieHeaderValue chv = new CookieHeaderValue("MyCookie", "Hellou"); 
chv.Expires = DateTime.Now.AddDays(1); 
chv.Domain = Request.RequestUri.Host; 
chv.Path = "/"; 

rmsg.Headers.AddCookies(new CookieHeaderValue[] { chv }); 

林閱讀這樣的餅乾,在HttpModule.AuthenticateRequest事件處理程序

HttpApplication app = sender as HttpApplication; 
HttpRequest request = app.Context.Request; 

if (request.Cookies.Count > 0) 
{ 
    HttpCookie c = request.Cookies.Get("MyCookie"); 
    if (c != null) 
    { 
     // ... 
    } 
} 

爲T他的cookie代碼是否正確?有沒有辦法確保cookie可以在所有客戶端上運行?

回答

2

基本認證的基本思想是,用戶的用戶名和密碼由客戶端在Authorization頭部的每個請求中發送。設計API時不需要任何cookie。

如果您不想使用基本身份驗證(因爲需要在每個請求上發送用戶名和密碼),您可以使用令牌保護您的API。以一個例子來看看following article