2013-02-19 23 views
2

我有一個列表,它具有文檔上的一些基本身份驗證。我遇到的問題是該列表正在緩存,因此用戶將看不到他們有權訪問,除非我更新修訂ID。你如何顯示非緩存列表?如何禁用/關閉/刷新couchdb緩存

if (req.userCtx.name === doc.permissions.owner) { 
    return 'you have permission'; 
} 
else { 
    return 'you do not'; 
} 

我怎麼會想象它做的是通過傳遞無緩存或更新ETAG或者諸如此類的標題的東西,但似乎沒有任何工作。這是我的一個嘗試,每次發送一個新的日期以使其不緩存,但這是行不通的。

var date = new Date().getTime() + 'x'; 
start({code: 200, headers: {'Content-Type': 'text/html', 'date': date}}); 

任何想法非常感謝!

順便說一下,我正在尋找一個純粹的沙發解決方案。

回答

1

幸運的是CouchDB資源可用!我能找到這個算法couch_mrview_show.erl

show_etag(#httpd{user_ctx=UserCtx}=Req, Doc, DDoc, More) -> 
    Accept = couch_httpd:header_value(Req, "Accept"), 
    DocPart = case Doc of 
     nil -> nil; 
     Doc -> couch_httpd:doc_etag(Doc) 
    end, 
    couch_httpd:make_etag({couch_httpd:doc_etag(DDoc), DocPart, Accept, 
     {UserCtx#user_ctx.name, UserCtx#user_ctx.roles}, More}). 

在這裏,我們可以看到,顯示緩存,除非有下列情況之一發生變化:

  • 設計文檔,其中包含顯示功能
  • 用於呈現節目的文檔
  • '接受'HTTP請求標頭
  • 用戶名(它表示至少爲每個用戶呈現一次)
  • 用戶環境中的一組用戶角色