Saya mempunyai aplikasi CRUD mudah yang membolehkan pengguna mendaftar dan log masuk Terdapat titik akhir pendaftaran dalam General.js, ini berfungsi dengan baik dan log masuk dicetak
"message": "登录无效。请检查用户名和密码"
- index.js - router - - general.js - - auth_users.js - - booksdb.js
Daftar di Posmen
Apabila saya log masuk ke titik akhir dalam auth_users.js
Ini ialah kod log masuk auth_users.js
的登录代码,它有登录端点,主要是负责登录的express函数regd_users.post()
Ia mempunyai titik akhir log masuk, yang merupakan fungsi ekspres yang bertanggungjawab untuk log masuk 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;
Berdasarkan kod yang diberikan, nampaknya terdapat masalah yang boleh menyebabkan mesej "Log Masuk Tidak Sah".
Bandingkan nama pengguna dan kata laluan dalam fungsi Pengguna yang disahkan: Dalam fungsi Pengguna yang disahkan, anda menapis tatasusunan pengguna untuk memadankan nama pengguna dan kata laluan. Walau bagaimanapun, terdapat masalah dengan fungsi penapisan. Daripada menggunakan users.username dan users.password, gunakan user.username dan user.password. Pembolehubah ini harus tunggal kerana ia mewakili setiap elemen dalam tatasusunan pengguna semasa lelaran.
Tukar baris ini:
Kepada: