2011-11-29 93 views
2

我有簡單的jQuery Mobile網站創建使用asp.net mvc 2並使用基本表單身份驗證授予訪問該網站。用戶離線應用程序的身份驗證

該應用程序是一個簡單的工作日誌,允許區域經理查看分配給區域團隊的當前問題的詳細信息。

當移動連接可用時,該應用程序運行良好,但由於缺乏信號,我們需要調查是否可以使應用程序的核心處於脫機狀態。我一直在研究使用HTML 5將應用程序離線的可能性,但無法找到任何有關驗證用戶的信息。

該應用程序是非常基本的,基本上有兩個不同的列表屏幕鑽入作業的詳細信息。

1. Login  
    1.1 Job List  
     2. Job Details 

    1.2 Team Diary  
     2. Job Details 

我相信,這將是很容易創造條件,以便在日記瀏覽時的連接不可用,但我無法找到一個網站,需要之前認證的任何信息數據的離線版本進入允許脫機的頁面。

內容不是敏感數據,但顯然客戶不希望任何人能夠瀏覽關於面向公衆的網站的工作日誌。

什麼是在可能離線使用的網站中驗證用戶的首選方式?

+1

只有在您登錄後才能將數據下載到設備並根據需要進行更新?如果他們已經登錄過一次,那麼您已經真正對其進行了身份驗證。實現本地任何東西似乎很奇怪,因爲總會有解決辦法。 – EricR

+1

感謝您的回覆。一旦認證,下載頁面似乎適合我。我想知道認證超時會有什麼影響?如果表單認證超時,離線頁面將無法訪問,需要另一個在線登錄? – fluent

+0

添加爲答案。這是你在找什麼? – EricR

回答

0

我正在重組一個MVC3站點以供離線使用,並且我遇到了一些相同的問題。

您需要注意的一件事是瀏覽器立即嘗試下載所有列在cache.manifest中的文件。如果用戶尚未登錄,則會導致問題,如果用戶未通過身份驗證,則會有經典的重定向到登錄頁面。您需要打開這些頁面的「靜態」視圖才能公開訪問,並讓您的JavaScript在嘗試檢索/發送更新之前確定用戶是否已登錄。這將允許瀏覽器下載靜態非內容頁面,並允許您的JavaScript根據需要管理內容。

我的應用使用從Jim Lehmer to detect online connectivity借來的方法。

一旦我們發現我們連在我的帳戶控制器,很好地返回用戶是否經過驗證或不創建一個小的行動:

public JsonResult IsAuthenticated() 
    { 
     return Json(new { Request.IsAuthenticated }, JsonRequestBehavior.AllowGet); 
    } 

希望幫助!

4

啊。我明白你現在要問什麼。我會建議如下。

當用戶第一次訪問應用程序時,它檢查是否存在本地數據(正確的本地數據?),如果該本地數據存在,則假定用戶有權訪問系統。現在檢查一個互聯網連接,如果它存在要求適當的憑據,如果沒有連接工作離線。因此,他們可以愉快地離線工作。

一旦該用戶重新獲得連接到互聯網,在與遠程同步本地之前,請求用戶提供他們的憑據。如果他們最初有互聯網連接,應用程序無疑會存儲他們正確認證的一些標誌,並且可以毫無疑問地同步。否則,請立即申請密碼。