亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試在 node.js 中發出 PUT 請求

嘗試在 node.js 中發出 PUT 請求

嚕嚕噠 2023-03-18 17:33:17
我正在嘗試使用 Javascript 通過 node.js 發出 PUT 請求?;旧?,我要做的是讓經過身份驗證的用戶可以更新電話號碼和密碼。通常我只是req.body為了讓正文被用來發出更新請求而使用,但是整個正文都有一個username,password和phoneNumber。我只需要更新密碼和電話號碼。除了已登錄的注冊用戶,我有一個限制此請求的限制功能,而且我還有一個更新模型功能,它是:function updateUser(changes, id) {    return db("users")    .update(changes)    .where({id})}我還試圖確保用戶決定更新的密碼(或他們當前擁有的密碼)經過哈希處理。我正在使用 bcryptjs 來散列密碼。我有兩個帖子請求,一個是加密密碼(這是我的注冊功能),一個是比較加密(我的登錄功能)。我將把它們都包括在內,以防您需要任何背景信息:router.post("/register", async (req, res, next) => {    try {        const {username, password, phoneNumber} = req.body        const user = await Users.findBy({username}).first()        if(user) {            return res.status(409).json({                message: "Username is already in use",            })        }        const newUser = await Users.create({            username,            password: await bcrypt.hash(password, 14),            phoneNumber,        })        res.status(201).json(newUser)    } catch (err) {        next(err)    }})router.post("/login", async(req, res, next) => {    try {        const {username, password} = req.body        const user = await Users.findBy({username}).first()                if(!user) {            return res.status(401).json({message: "Invalid Username or Password",})        }        const passwordValid = await bcrypt.compare(password, user.password)        if(!passwordValid) {            return res.status(401).json({message: "Invalid Username or Password",})        }                const token = jwt.sign({            userId: user.id,        }, process.env.JWT_SECRET)                res.cookie("token", token)        res.json({            message: `Welcome to your plant page ${user.username}!`        })    } catch (err) {        next(err)    }});
查看完整描述

1 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

在找到班上某人的幫助后,我弄明白了。我在正確的軌道上使用const {phoneNumber, password} = req.body. 剩下的就是這個(或者這是所有的代碼):


router.put("/:id/updateaccount", restrict(), async(req, res, next) => {

    try {

        const {phoneNumber, password} = req.body

        const userUpdate = await Users.updateUser({

          phoneNumber, password: await bcrypt.hash(password, 14)

         }, req.params.id)

        

        res.status(200).json({

        userUpdate:userUpdate, message: "You have successfully updated your information",

        })

    } catch(err) {

        next(err)

    }

}) 

我再次使用 bcrypt 來加密新更新的密碼



查看完整回答
反對 回復 2023-03-18
  • 1 回答
  • 0 關注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號