如何使用localstorage使用javascript登录

时间:2015-02-20 08:04:54

标签: javascript jquery cordova phonegap-build

我使用javascript编写了一个登录代码

function checkLogin()
{
    if(localStorage.login=="true")
    {
        window.location.href = "index.html";
    }
    else if(localStorage.login=="false")
    {
        window.location.href = "login.html";
    }
}

其中localStorage.login =" true" &安培; "假"已从服务器动态分配

当我包含此代码时,页面会被循环重定向!!

给我解决方案:

如何在执行后删除/销毁用户定义的函数?

如何在jquery

中执行仅一次onpreviceready 的用户定义函数

3 个答案:

答案 0 :(得分:2)

设置 localStorage对象:

localStorage.setItem('objName','objValue');

获取 localStorage对象:

localStorage.getItem('objName');

答案 1 :(得分:1)

我认为最好的解决方案是仅从您想要重定向到登录页面调用此函数,正如Emad Melad所说,在login.html页面之外。

如果您想要的是再次访问login.php页面的人如果已登录则会被重定向到index.php,您可以尝试检测您所在的页面,然后创建IF所以,如果它是登录页面,它就不会被执行。它会是这样的:

function checkLogin()
{
    var url = window.location.pathname;
    var filename = url.substring(url.lastIndexOf('/')+1)

    if(localStorage.login=="true")
    {
        window.location.href = "index.html";
    }
    else if(localStorage.login=="false" && filename != 'login.html')
    {
        window.location.href = "login.html";
    }
}

* The snippet code to get the actual URL

但是,根据我在您的代码中所读到的内容,您将从调用此函数的每个页面重定向到index.html

通常,我在我的应用中所做的只是检查它是否未登录,如果是这种情况,则重定向到login.html。我要做的是,修改一下你的功能,是:

    function checkLogin()
    {
        var url = window.location.pathname;
        var filename = url.substring(url.lastIndexOf('/')+1)

        if(localStorage.login=="true" && filename == 'login.html')
        {
            window.location.href = "index.html";
        }
        else if(localStorage.login=="false" && filename != 'login.html')
        {
            window.location.href = "login.html";
        }
    }

这样,如果您已登录并且您使用的是login.php,则只会被重定向到index.html,而如果您不是,则只会被重定向到login.html。已登录,但login.html除外。

希望它可以帮到你!

答案 2 :(得分:0)

无法从服务器设置LocalStorage。 LocalStorage位于客户端浏览器中。 我猜你的代码是循环的,因为你加载登录页后调用checkLogin()函数。因为localStorage是空的。 这行代码将执行

window.location.href = "login.html";

再次加载页面并再次检查localStorage并且它是空的

解决这个问题。 你应该在登录页面之外调用你的功能。