J'ai une application CRUD simple qui permet aux utilisateurs de s'inscrire et de se connecter Il y a un point de terminaison d'enregistrement dans General.js, cela fonctionne bien et la connexion s'imprime
"message": "登录无效。请检查用户名和密码"
- index.js - router - - general.js - - auth_users.js - - booksdb.js
Inscrivez-vous sur Postman
Lorsque je me connecte au point de terminaison dans auth_users.js
Il s'agit du code de connexion de auth_users.js
的登录代码,它有登录端点,主要是负责登录的express函数regd_users.post()
. Il a un point de terminaison de connexion, qui est principalement la fonction express responsable de la connexion regd_users.post()
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;
D'après le code fourni, il semble y avoir un problème pouvant provoquer le message « Connexion invalide ».
Comparez le nom d'utilisateur et le mot de passe dans la fonction AuthenticatedUser : Dans la fonction AuthenticatedUser, vous filtrez le tableau des utilisateurs pour faire correspondre les noms d'utilisateur et les mots de passe. Cependant, il existe des problèmes avec la fonctionnalité de filtrage. Au lieu d'utiliser users.username et users.password, utilisez user.username et user.password. Cette variable doit être singulière car elle représente chaque élément du tableau utilisateurs lors de l'itération.
Modifiez cette ligne :
À :