如何使用本地存储使用javascript登录

Posted

技术标签:

【中文标题】如何使用本地存储使用javascript登录【英文标题】:how to use localstorage for login using javascript 【发布时间】:2015-02-20 08:04:54 【问题描述】:

我已经编写了一个使用 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.login="true" & "false" 已从服务器动态分配。无法从服务器设置 localStorage。在此处需要有关如何设置此值的更多详细信息。 【参考方案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】:

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

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

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

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

【讨论】:

【参考方案3】:

设置 localStorage 对象:

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

获取 localStorage 对象:

localStorage.getItem('objName');

【讨论】:

以上是关于如何使用本地存储使用javascript登录的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地存储中使用 JWT 来保持用户登录?

如何使用 javascript 而不是 Django 会话将表单数据(Django 表单)存储到浏览器的本地存储?

如何使用纯 Javascript 将选中的单选按钮的值存储在本地存储中?

如何使 Azure 存储 (blob) 工作?

如何使用 Nuxt.js 将数据存储到本地存储

学习者:如何通过更改ID和版本使本地存储无效?