如果没有使用 localstorage 登录,如何将人们重定向到登录?

How do i redirect people to the login if not logged using 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}`);
}