我使用asp.net mvc 2创建了简单的jQuery Mobile网站,并使用基本表单身份验证来授予对网站的访问权限。
该应用程序是一个简单的工作日记,允许区域经理查看有关分配给区域团队的当前问题的详细信息。
当移动连接可用时,该应用程序运行良好,但由于缺乏信号,我们需要调查使应用程序的核心可脱机使用的可能性。我一直在研究使用html 5使应用程序脱机的可能性,但无法找到有关验证用户身份的任何信息。
该应用程序非常基本,基本上有两个不同的列表屏幕,可以深入查看作业详细信息。
1. Login
1.1 Job List
2. Job Details
1.2 Team Diary
2. Job Details
我相信创建一个离线版本的数据会很容易,当连接不可用时我可以浏览日记但我找不到任何有关需要进行身份验证的网站的信息才能进入页面允许离线。
内容不是敏感数据,但显然客户不希望任何人能够在面向公众的网站上浏览工作日记。
在可能脱机使用的站点中对用户进行身份验证的首选方法是什么?
答案 0 :(得分:4)
阿。我明白你现在在问什么。我建议如下。
当用户首次访问应用程序时,它会检查是否存在本地数据(正确的本地数据?),如果存在本地数据,则假定用户可以访问系统。现在检查互联网连接,如果存在则要求正确的凭据,如果没有连接工作脱机。因此,他们可以离线工作愉快。
一旦该用户重新连接到互联网,在与本地同步远程之前,请询问用户他们的凭据。在他们最初具有互联网连接的情况下,应用程序无疑会存储他们正确身份验证的一些令牌,并且可以毫无疑问地同步。否则,现在要求输入密码。
答案 1 :(得分:0)
我正在重组一个MVC3网站以供离线使用,我遇到了一些相同的问题。
您需要注意的一件事是浏览器会立即尝试下载cache.manifest中列出的所有文件。如果用户尚未登录,并且如果未对用户进行身份验证,则会对登录页面进行经典重定向,从而导致出现问题。您需要打开这些页面的“静态”视图以进行公共访问,并让您的JavaScript在尝试检索/发送更新之前确定用户是否已登录。这将允许浏览器下载静态非内容页面,并允许您的JavaScript根据需要管理内容。
我的应用使用了从Jim Lehmer to detect online connectivity借来的方法。
一旦我们发现我们已连接,我在我的帐户控制器中创建了一个小动作,可以很好地返回用户是否经过身份验证:
public JsonResult IsAuthenticated()
{
return Json(new { Request.IsAuthenticated }, JsonRequestBehavior.AllowGet);
}
希望有所帮助!