如何在单个域中使用多个不同的localStorage?

时间:2014-02-21 23:03:04

标签: javascript jquery html5

我有一个网站,其中有3个不同的用户可以访问3个不同的文件夹。如果您访问www.thissite.com/folder1/index.html,它会检查用户是否已登录,如果没有,则会重定向到登录页面。

我使用localStorage这样做,因为我不想因为IOS问题而处理cookie和会话。

我有这个代码,它将一个默认对象分配给localStorage。它适用于单个文件夹。但是当我尝试在其他文件夹上使用它时,它会直接进入文件夹的提示页面,而不是调用登录页面。

如何在localStorage中为不同的文件夹使用类似的代码?如何为每个文件夹创建3个唯一的localStorage,以便在访问时仍然受到保护并要求登录?

这是我的代码:

的index.html

             if(localStorage['data']){
             var data=JSON.parse(localStorage['data']);
             if(data.logedIn==1){

             }else{
              location.href="http://example.com/test/login.html";
             }
            }
            var folder1 = "http://example.com/test/";

            var defaultInfo=[
             {folder:'folder1',count:1,pageLoadCount:1},
            ],
            data=localStorage['data']?      JSON.parse(localStorage['data']):defaultInfo;//load

            console.log(data);

            if(data.pageLoadCount==0){
             location.href="http://example.com/test/login.html";
            }

            data.pageLoadCount++;
            data.count=dir1.pageLoadCount;

            localStorage['data']=JSON.stringify(data);

的login.html

            <script type="text/javascript">
            function test() {
            var userName = document.Form1.id.value;
            var password = document.Form1.pass.value;
            if ((userName=="moulinex") && (password=="abc123")) {

                window.open("http://example.com/test/index.html");

                } else {
                alert("Invalid ID or Password!")
                }
            }

            </script>

我把它放在登录页面的下面

    <script>
            localStorage['data']=JSON.stringify({logedIn:1})
            </script>

提前多多感谢。所有/任何答案都非常适合。

1 个答案:

答案 0 :(得分:1)

LocalsStorage是名称/值字典。如果您只使用data名称,则会覆盖其中的所有先前值。而是使用三个不同的名称(每个文件夹一个)并以这种方式设置其数据:

localStorage['folder1'] = JSON.strinfify({logedIn:1});
localStorage['folder2'] = JSON.strinfify({logedIn:0});
localStorage['folder3'] = JSON.strinfify({logedIn:1});

或者,您可以在localStorage中创建一个对象,然后以这种方式填充不同的文件夹。

localSotrage['data'] = JSON.stringify({
                          folder1: {logedIn: 1}, 
                          folder2: {logedIn: 0}, 
                          folder3: {logedIn: 1}
                       });