如何使用 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
.
希望对您有所帮助!
我使用 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
.
希望对您有所帮助!