如何使用本地存储使用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登录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 javascript 而不是 Django 会话将表单数据(Django 表单)存储到浏览器的本地存储?