如何解决如何解决在node.js和mysql上登录失败的问题
我正在使用nodejs和mysql创建登录名并注册 当我在邮递员那里尝试时,当我注册成功时,但是当我尝试登录时,在邮递员页面上,它始终是“发送请求”,并且在代码上没有错误
这是错误和代码 sending request postman enter image description here
此处代码为Users.js
const express = require("express")
const users = express.Router()
const cors = require('cors')
const jwt = require('jsonwebtoken')
const bcrypt = require('bcrypt')
const User = require('../models/User')
users.use(cors())
process.env.SECRET_KEY = 'secret'
users.post('/register',(req,res)=>{
const today = new Date()
const userData = {
Nama: req.body.Nama,Nama_toko:req.body.Nama_toko,Email: req.body.Email,Password: req.body.Password,create:today
}
User.findOne({
where:{
Email: req.body.Email
}
})
.then(user =>{
if(!user){
bcrypt.hash(req.body.Password,10,(err,hash)=>{
userData.Password= hash
User.create(userData)
.then(user =>{
res.json({status: user.Email + ' registered'})
})
.catch(err =>{
res.send('error: '+err)
})
})
}else{
res.json({error: "User Alredy Exits"})
}
})
.catch(err =>{
res.send('error: ' + err)
})
})
users.post('/login',res)=>{
User.findOne({
where: {
Email: req.body.Email
}
})
.then(user => {
if(user){
if(bcrypt.compareSync(req.body.Password,user.Password)){
let token = jwt.sign(user.dataValues,process.env.SECRET_KEY,{
expiresIn: 1440
})
res.send(token)
}
}else{
res.status(400).json({error: "User doesnt not exist"})
}
})
.catch(err =>{
res.status(400).json({error: "Error salah"})
})
})
module.exports = users
server.js
var express = require("express")
var cors = require("cors")
var bodyParser = require("body-parser")
var app = express()
var port = process.env.PORT || 5000
app.use(bodyParser.json())
app.use(cors())
app.use(bodyParser.urlencoded({extended: false}))
var Users = require('./routes/Users')
app.use('/Users',Users)
app.listen(port,()=>{
console.log("Server is running at : " + port)
})
解决方法
如果请求没有得到响应,通常意味着您在路由中没有呼叫res.send()
或res.json()
。
if(bcrypt.compareSync(req.body.Password,user.Password)){
let token = jwt.sign(user.dataValues,process.env.SECRET_KEY,{
expiresIn: 1440
})
res.send(token)
}
此else
中没有if
块,有可能bcrypt.compareSync
返回false并且响应未得到处理,请尝试:
if(bcrypt.compareSync(req.body.Password,{
expiresIn: 1440
})
res.send(token)
} else {
res.status(401).json({error: "Incorrect Password"})
}
看看是否有任何回应。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。