如何使用 javascript 使用 localstorage 进行登录

how to use localstorage for login using javascript

我使用 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" & "false" 已从服务器动态分配

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

给我解决方案:

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

如何在 jquery

ondeviceready 仅执行一次用户定义函数

设置 localStorage对象:

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

获取 localStorage对象:

localStorage.getItem('objName');

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

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

然后页面再次加载并再次检查 localStorage,它是空的

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

我认为最好的解决方案是仅从您要重定向到登录的页面调用此函数,并且如 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.

希望对您有所帮助!