Heim  >  Fragen und Antworten  >  Hauptteil

Fehler in der Enpoint-Anmeldung von Express js/Node js funktioniert nicht ordnungsgemäß

Ich habe eine einfache CRUD-Anwendung, mit der sich Benutzer registrieren und anmelden können Es gibt einen Registrierungsendpunkt in General.js, dieser funktioniert einwandfrei und die Anmeldung wird gedruckt

"message": "登录无效。请检查用户名和密码"

- index.js
- router
- - general.js
- - auth_users.js
- - booksdb.js

Registrieren Sie sich bei Postman

Wenn ich mich am Endpunkt in auth_users.js

anmelde

Dies ist der Anmeldecode von auth_users.js的登录代码,它有登录端点,主要是负责登录的express函数regd_users.post(). Er verfügt über einen Anmeldeendpunkt, bei dem es sich hauptsächlich um die Express-Funktion handelt, die für die Anmeldung regd_users.post() verantwortlich ist

const express = require('express');
const jwt = require('jsonwebtoken');
let books = require("./booksdb.js");
const regd_users = express.Router();

let users = [];

const isValid = (username)=>{ //returns boolean
//write code to check is the username is valid
let userswithsamename = users.filter((user)=>{
    return user.username === username
  });
  if(userswithsamename.length > 0){
    return true;
  } else {
    return false;
  }
}

const authenticatedUser = (username,password)=>{ //returns boolean
//write code to check if username and password match the one we have in records.
let validusers = users.filter((user)=>{
    return (users.username === username &&users.password === password)
  });
  if(validusers.length > 0){
    return true;
  } else {
    return false;
  }
}
 
//only registered users can login
regd_users.post("/login", (req,res) => {

    const username = req.query.username;
    const password = req.query.password;
    if (!username || !password) {
        return res.status(404).json({message: "Error logging in"});
    }
    if (authenticatedUser(username,password)) {
      let accessToken = jwt.sign({
        data: password
      }, 'access', { expiresIn: 60 * 60 });
      req.session.authorization = {
        accessToken,username
    }
    return res.status(200).send("User successfully logged in");
    } else {
      return res.status(208).json({message: "Invalid Login. Check username and password"});
}
});

// Add a book review
regd_users.put("/auth/review/:isbn", (req, res) => {
  //Write your code here
  return res.status(300).json({message: "Yet to be implemented"});
});

module.exports.authenticated = regd_users;
module.exports.isValid = isValid;
module.exports.users = users;

P粉428986744P粉428986744403 Tage vor544

Antworte allen(1)Ich werde antworten

  • P粉184747536

    P粉1847475362023-09-13 00:26:40

    根据提供的代码,似乎存在可能导致“无效登录”消息的问题。

    在authentiatedUser函数中比较用户名和密码: 在authentiatedUser 函数中,您将过滤用户数组以查找匹配的用户名和密码。但是,过滤功能存在问题。不应使用 users.username 和 users.password,而应使用 user.username 和 user.password。该变量应该是单数,因为它代表迭代过程中 users 数组中的每个元素。

    更改此行:

    return (users.username === username && users.password === password)

    至:

    return (user.username === username && user.password === password)

    Antwort
    0
  • StornierenAntwort