我有一個簡單的 CRUD 應用程序,可以讓用戶註冊和登錄 在 General.js 中有一個註冊端點,這工作正常並且登入列印
"message": "登入無效。請檢查使用者名稱和密碼"
- index.js - router - - general.js - - auth_users.js - - booksdb.js
在郵差註冊
當我在 auth_users.js
中登入端點時
這是auth_users.js
的登入程式碼,它有登入端點,主要是負責登入的express函數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;
根據提供的程式碼,似乎存在可能導致「無效登入」訊息的問題。
在authentiatedUser函數中比較使用者名稱和密碼: 在authentiatedUser 函數中,您將過濾使用者陣列以尋找符合的使用者名稱和密碼。但是,過濾功能有問題。不應使用 users.username 和 users.password,而應使用 user.username 和 user.password。該變數應該是單數,因為它代表迭代過程中 users 陣列中的每個元素。
更改此行:
至: