javascript - 如果未使用 localstorage 登录,我如何将人们重定向到登录名?
问题描述
我正在尝试做一个练习,要求我使用本地或会话存储进行登录,如果用户已登录,则必须在主页中检查,如果未登录,则应将其重定向到登录,如果是,它应该什么都不做,但我遇到的问题是它要么不检查本地存储,要么即使我已经登录,它也会不断将我重定向到登录。
对不起我的英语不好。
这是我一直在尝试的。
if (nombre.trim() === "" || pw.trim() === "") {
alert("Debe ingresar su nombre.");
console.log(nombre.trim())
} else {
localStorage.setItem("nombre", nombre.trim());
localStorage.setItem("pw", pw.trim());
sessionStorage.setItem("nombre", nombre.trim());
alert("Usuario:" + nombre + "Contraseña:" + pw)
window.location.href = "index.html"
}
// This is what check if logged in the index:
var logeado = sessionStorage.getItem('nombre');
if (logeado === "" || logeado === null) {
window.location.href = "login.html"
} else {
alert('Fue logeado satisfactoriamente.')
}
另外我是编码新手,以防你们都没有注意到。
解决方案
如果您从未输入任何凭据,您的代码应该可以工作。但是,不可能再次注销用户,我认为这可能是您的问题。
如果没有提供新信息,您真的只想检查缓存。
空字符串是新信息。
所以你应该只在用户和密码未定义时使用它,而不是当它们为空时。
这是一个有效的示例,如果我对您的缓存问题的看法是正确的,也应该对您有用。
let user = "my_user";
let pw = "secure_password";
if (typeof user === "string") {
user = user.trim();
}
if (typeof pw === "string") {
pw = pw.trim();
}
if (user === "" || pw === "") {
localStorage.setItem("user", "");
localStorage.setItem("pw", "");
} else if (user !== undefined && pw !== undefined) {
localStorage.setItem("user", user);
localStorage.setItem("pw", pw);
}
var userLoggedIn = localStorage.getItem('user');
if (!userLoggedIn) {
console.log("No user logged in");
} else {
console.log(`User logged in: ${userLoggedIn}`);
}
推荐阅读
- jquery - Django Jquery:$image.cropper 不是函数
- docker - .NET core docker - dotnet publish 后如何找到入口应用
- git - SmartGit 中的分段修改是什么意思
- angular - 基于配置和闪烁的注入CSS
- spring - 如何用spring boot test来测试这个方法?
- ios - 删除在 tableview 上不可见的单元格时崩溃
- tensorflow - 张量流中 tf.decode_csv 的记录默认值
- python - virtualenv 启用全局环境
- php - 通过ID查看表格行的详细信息
- django - Django模板没有被表单上下文传递