2010-07-07 18 views
1

如何我有一個用戶身份驗證,然後下載專門爲他們創建了一個脫機應用程序?緩存清單登錄保護的網頁

我創建一個公共/私人密鑰加密脫機使用系統和每一個用戶需要能夠登錄並使用一種「下載」的加密/解密頁面(app.php)。這個表單將它們轉儲到它們的app.php頁面上,並提供一個緩存清單文件。應用程序需要在本地存儲它們的加密和解密密鑰,以便通過Javascript使用。在沒有任何登錄信息的情況下訪問此頁面(app.php)應返回錯誤頁面。任何更新都通過ajax到api.php進行,並存儲在localstorage中,因此物理下載頁面並將其保存在某處不起作用(localstorage不適用於本地文件)。

這裏是我的緩存文件manifest.php:

<?php header("Content-Type: text/cache-manifest"); ?>CACHE MANIFEST 
# v1.2 
app.php 

NETWORK: 
api.php 

刷新到它登陸後的應用程序(通過POST請求)導致被顯示,而不是瀏覽器中加載緩存的應用程序中的錯誤頁面。

編輯:

我懷疑POST請求有事情做與缺乏緩存。最初的下載進程中觀看螢火蟲顯示:

POST app.php 200 - Includes the application to be cached 
GET app.php 401 - The error page - this is being cached instead 

回答

1

POST請求是問題,所以我不得不創建一個獨特的下載鏈接爲每個用戶,然後將其重定向到該鏈接。該鏈接需要能夠從瀏覽器中至少點擊兩次,因此我將每個鏈接都暫停了1小時,然後使其無效。高速緩存清單文件也必須與獨特的URL進行修改:

http://.../app.php?instanceid=(md5)

<?php header("Content-Type: text/cache-manifest"); ?>CACHE MANIFEST 
# v1.2 
app.php?instanceid=<?php echo $_GET['instanceid']; ?> 


NETWORK: 
api.php