国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Node.js: express + MySQL實(shí)現(xiàn)修改密碼

這篇具有很好參考價(jià)值的文章主要介紹了Node.js: express + MySQL實(shí)現(xiàn)修改密碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

? ? ? ? 實(shí)現(xiàn)修改密碼,本篇文章實(shí)現(xiàn)修改密碼只考慮以下幾個(gè)方面:

? ? ? ? (1),獲取舊密碼

? ? ? ? (2),獲取新密碼

? ? ? ? (3),將獲取到的舊密碼與數(shù)據(jù)庫(kù)中的密碼進(jìn)行比對(duì)(避免修改錯(cuò)用戶)

? ? ? ? (4),新密碼與進(jìn)密碼進(jìn)行比對(duì),新密碼和舊密碼不能相同

? ? ? ? (5),將新密碼加密存入數(shù)據(jù)庫(kù)中

? ? ? ? 另外的一些點(diǎn)就不考慮了。

? ? ? ? 在我的這篇博客(Node.js: express + MySQL實(shí)現(xiàn)注冊(cè)登錄,身份認(rèn)證_express連接mysql數(shù)據(jù)庫(kù)注冊(cè)登陸_掉頭發(fā)類型的選手的博客-CSDN博客)中寫到,注冊(cè)時(shí)用到??bcryptjs? 這個(gè)包對(duì)密碼進(jìn)行加密,所以在修改密碼時(shí)也需要用到包進(jìn)行密碼的比較和對(duì)新密碼進(jìn)行加密。

? ? ? ? 從前端接收的值,id(判斷修改哪個(gè)用戶的密碼),oldPwd(舊密碼),newPwd(新密碼),會(huì)存儲(chǔ)到 req 中。

? ? ? ? 文件中寫的是修改密碼的函數(shù),路徑可以看我之前關(guān)于注冊(cè)的文章,將路徑和他的執(zhí)行函數(shù)分開編寫。便于管理。

// 修改密碼
exports.updatePassword = (req, res) => {
    console.log(req);
}

? ? ? ? (1),根據(jù)id值獲取數(shù)據(jù)庫(kù)中需要修改的密碼

exports.updatePassword = (req, res) => {
    console.log(req);
    // 根據(jù)id查詢用戶信息
    const sql = 'select * from ev_users where id=?'
    // 執(zhí)行sql語(yǔ)句
    db.query(sql, req.user.id, (err, results) => {
        // 查詢出錯(cuò)
        if (err) return res.cc(err)
        // 查詢成功 但條數(shù)不等于1
        if (results.length !== 1) return res.cc('用戶不存在')
        console.log(results[0].password);
    })
}

? ? ? ? 根據(jù)id去查詢需要修改的數(shù)據(jù),如果查詢出錯(cuò)或用戶不存在做一下處理,如果查詢成功,? ? ? ? results[0].password? 就是數(shù)據(jù)庫(kù)中存儲(chǔ)的加密后的密碼。

? ? ? ? (2),之后從 req 中獲取到的密碼和數(shù)據(jù)庫(kù)中存儲(chǔ)的密碼進(jìn)行比較,是否一致,比較可以使用??bcryptjs? 包中的一個(gè)方法(bcryptjs 是存儲(chǔ)密碼時(shí)對(duì)密碼進(jìn)行加密使用的包),compareSync方法。

exports.updatePassword = (req, res) => {
    console.log(req);
    // 根據(jù)id查詢用戶信息
    const sql = 'select * from ev_users where id=?'
    // 執(zhí)行sql語(yǔ)句
    db.query(sql, req.user.id, (err, results) => {
        // 查詢出錯(cuò)
        if (err) return res.cc(err)
        // 查詢成功 但條數(shù)不等于1
        if (results.length !== 1) return res.cc('用戶不存在')
        // 判斷用戶輸入的舊密碼是否正確
        // 不能直接判斷  數(shù)據(jù)庫(kù)中存加密后的密碼
        const compareResult = bcryptjs.compareSync(req.body.oldPwd, results[0].password)
        if (!compareResult) return res.cc('舊密碼錯(cuò)誤!')
    })
}

? ? ? ? 使用? bcryptjs.compareSync(req.body.oldPwd, results[0].password)? 就可以對(duì)獲取的舊密碼和數(shù)據(jù)庫(kù)中存儲(chǔ)的密碼進(jìn)行比較。相同會(huì)返回true,不同返回false。

? ? ? ? (3)將新密碼和數(shù)據(jù)庫(kù)中的密碼進(jìn)行比較,新密碼不能和原密碼相同。

第一種判斷方法

const sameCompare = bcryptjs.compareSync(req.body.newPwd, results[0].password)
if (sameCompare) return res.cc('新密碼不能和原密碼相同!')

Node.js: express + MySQL實(shí)現(xiàn)修改密碼,express,mysql,數(shù)據(jù)庫(kù)

第二種判斷方法

? ? ? ? 在注冊(cè)登錄那篇文章中寫到有兩個(gè)包,@escook/express-joi(自動(dòng)對(duì)表單數(shù)據(jù)進(jìn)行驗(yàn)證),joi(字段規(guī)則),也可以用這兩個(gè)包進(jìn)行新舊密碼的判斷。

// 導(dǎo)入定義驗(yàn)證規(guī)則的包
const joi = require('joi')

// 字符串類型,匹配正則,必輸
const password = joi.string().pattern(/^[\S]{6,12}$/).required()

exports.update_password_schema = {
    body: {
        // 舊密碼使用 password 這個(gè)規(guī)則
        oldPwd: password,
        // 新密碼不能等于舊密碼,但也得符合密碼的規(guī)則
        // joi.ref('')  與括號(hào)中的值保持一致
        newPwd: joi.not(joi.ref('oldPwd')).concat(password),
    }
}

????????之后在路由處使用。

// 導(dǎo)入驗(yàn)證數(shù)據(jù)的中間件
const expressJoi = require('@escook/express-joi')
const { update_password_schema } = require('../schema/user')

// 重置密碼
router.post('/updatePwd', expressJoi(update_password_schema), userInfo_handler.updatePassword)

? ? ? ? 如果輸入一致的話會(huì)返回:

Node.js: express + MySQL實(shí)現(xiàn)修改密碼,express,mysql,數(shù)據(jù)庫(kù)

? ? ? ? (4)之后就可以將新密碼加密存儲(chǔ)到數(shù)據(jù)庫(kù)中。

? ? ? ? 先將新密碼加密,然后再使用? update? 語(yǔ)句將密碼存儲(chǔ)到數(shù)據(jù)庫(kù)中。這個(gè)接口所有的代碼:

// 重置密碼
exports.updatePassword = (req, res) => {
    // console.log(req);
    // 根據(jù)id查詢用戶信息
    const sql = 'select * from users where id=?'
    // 執(zhí)行sql語(yǔ)句
    db.query(sql, req.user.id, (err, results) => {
        // 查詢出錯(cuò)
        if (err) return res.cc(err)
        // 查詢成功 但條數(shù)不等于1
        if (results.length !== 1) return res.cc('用戶不存在')
        // 判斷用戶輸入的舊密碼是否正確
        // 不能直接判斷  數(shù)據(jù)庫(kù)中存加密后的密碼
        const compareResult = bcryptjs.compareSync(req.body.oldPwd, results[0].password)
        if (!compareResult) return res.cc('舊密碼錯(cuò)誤!')
        // 將新密碼更新到數(shù)據(jù)庫(kù)中
        // 更新密碼sql語(yǔ)句
        const sql = 'update users set password=? where id=?'
        // 對(duì)新密碼進(jìn)行加密處理
        const newPwd = bcryptjs.hashSync(req.body.newPwd, 10)
        db.query(sql, [newPwd, req.user.id], (err, results) => {
            // 執(zhí)行sql語(yǔ)句失敗
            if (err) return res.cc(err)
            // 執(zhí)行成功 但修改的條數(shù)不為1,沒有修改
            if (results.affectedRows !== 1) return res.cc('修改密碼失敗')
            // 修改密碼成功
            res.cc('修改密碼成功', 0)
        })
    })
}

? ? ? ? 可以到下面鏈接獲取文章中的代碼。

????????鏈接: https://pan.baidu.com/s/1t7bX0Nv3kggyf7IFzEffcA 提取碼: 0000文章來源地址http://www.zghlxwxcb.cn/news/detail-601384.html

到了這里,關(guān)于Node.js: express + MySQL實(shí)現(xiàn)修改密碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Windows修改MySQL數(shù)據(jù)庫(kù)密碼(修改或忘記密碼)
?

    Windows修改MySQL數(shù)據(jù)庫(kù)密碼(修改或忘記密碼) ?

    今天練習(xí)遠(yuǎn)程訪問數(shù)據(jù)庫(kù)時(shí),為了方便訪問,就想著把數(shù)據(jù)庫(kù)密碼改為統(tǒng)一的,以后我們也會(huì)經(jīng)常遇到MySQL需要修改密碼的情況,比如密碼太簡(jiǎn)單、忘記密碼等等。在這里我就借鑒其他人的方法總結(jié)幾種修改MySQL密碼的方法。 我就以實(shí)際操作修改root密碼為例,操作系統(tǒng)為win

    2024年02月09日
    瀏覽(102)
  • Windows修改MySQL數(shù)據(jù)庫(kù)密碼(修改或忘記密碼)

    Windows修改MySQL數(shù)據(jù)庫(kù)密碼(修改或忘記密碼)

    今天練習(xí)遠(yuǎn)程訪問數(shù)據(jù)庫(kù)時(shí),為了方便訪問,就想著把數(shù)據(jù)庫(kù)密碼改為統(tǒng)一的,以后我們也會(huì)經(jīng)常遇到MySQL需要修改密碼的情況,比如密碼太簡(jiǎn)單、忘記密碼等等。在這里我就借鑒其他人的方法總結(jié)幾種修改MySQL密碼的方法。 我就以實(shí)際操作修改root密碼為例,操作系統(tǒng)為win

    2024年02月08日
    瀏覽(94)
  • MySQL數(shù)據(jù)庫(kù)忘記密碼后,如何修改密碼

    MySQL數(shù)據(jù)庫(kù)忘記密碼后,如何修改密碼

    1、以管理員身份打開命令行 2、在命令行中進(jìn)入MySQL的bin目錄所在文件夾 即:在命令行中輸入: 路徑查找如下: 命令行輸入命令: 3、跳過MySQL用戶驗(yàn)證登錄數(shù)據(jù)庫(kù) 命令行輸入: 注意:輸入此命令之后,當(dāng)前的命令行就無法操作了,此時(shí)需要再打開一個(gè)新的命令行。(在這一步

    2024年02月04日
    瀏覽(96)
  • MySQL數(shù)據(jù)庫(kù)修改root賬戶密碼

    MySQL數(shù)據(jù)庫(kù)修改root賬戶密碼

    博主今天登錄數(shù)據(jù)庫(kù)遇到了一個(gè)問題,通過這篇文章(http://t.csdn.cn/58ECT)解決了。文中關(guān)于修改root賬戶密碼的部分,博主覺得有必要寫一篇文章總結(jié)下。 我的是在D盤下,操作時(shí)可以一步步來,用CMD的cd(切換目錄)+tab(提示文件名),逐步切換到目標(biāo)目錄下。需要注意的是

    2024年02月06日
    瀏覽(33)
  • mysql數(shù)據(jù)庫(kù)root密碼遺忘后,修改root密碼

    mysql數(shù)據(jù)庫(kù)root密碼遺忘后,修改root密碼

    目錄 方式一: 方式二: 2.1 也可以像我這樣,普通用戶登錄進(jìn)去后 2.2 執(zhí)行如下命令,將已知的user1的加密密文更新到root中 2.3 查詢數(shù)據(jù)庫(kù) 2.4 用root用戶登錄 2.5 登錄正常,但這會(huì)root登錄進(jìn)去后,無法執(zhí)行具體的sql,只要有操作,會(huì)報(bào)如下的錯(cuò): 2.6 需要重新ALTRE下用戶信息

    2024年02月12日
    瀏覽(24)
  • Mysql數(shù)據(jù)庫(kù)--修改root密碼的幾種方法(忘記密碼&知道密碼)

    Mysql數(shù)據(jù)庫(kù)--修改root密碼的幾種方法(忘記密碼&知道密碼)

    ?? 通過 alter user root identified by \\\'新密碼\\\'; ?? 通過 set password for 用戶名@\\\'用戶地址\\\' = \\\'新密碼\\\'; 2.1.1 ?? 停止mysql服務(wù) 2.1.2 ?? 創(chuàng)建mysql-init-file.txt文件 2.1.3 ?? init-file的權(quán)限(最好賦權(quán)一下) 2.1.3 ?? 使用–init-file選項(xiàng)啟動(dòng)mysql服務(wù) 2.1.4 ?? 新密碼連接測(cè)試(密碼:Zyl@123321)

    2024年02月08日
    瀏覽(93)
  • Node.js 連接 mysql 數(shù)據(jù)庫(kù)

    目錄 一、安裝驅(qū)動(dòng) 二、連接數(shù)據(jù)庫(kù) 1、數(shù)據(jù)庫(kù)連接的配置信息 數(shù)據(jù)庫(kù)連接參數(shù)說明 2、封裝 mysql 的執(zhí)行語(yǔ)句 3、后端路由文件? 三、數(shù)據(jù)庫(kù)操作( CURD ) 1、查詢數(shù)據(jù) 2、插入數(shù)據(jù) 3、更新數(shù)據(jù) 4、刪除數(shù)據(jù) 4、獲取受影響的行數(shù) 5、獲取更改的行數(shù) 6、多語(yǔ)句查詢 7、事務(wù) 四、E

    2024年02月07日
    瀏覽(23)
  • “Node.js:操作mysql數(shù)據(jù)庫(kù)“

    Node.js中操作mysql數(shù)據(jù)庫(kù) ? mysql模塊 是托管于npm的第三方模塊,它提供了Node.js項(xiàng)目中 連接 和 操作mysql數(shù)據(jù)庫(kù) 的能力。 在項(xiàng)目中操作數(shù)據(jù)庫(kù)的步驟 (1).安裝mysql數(shù)據(jù)庫(kù)的第三方模塊(mysql) (2).通過mysql模塊連接到mysql數(shù)據(jù)庫(kù) (3).通過mysql模塊執(zhí)行sql語(yǔ)句 1.操作mysql數(shù)據(jù)庫(kù) db.query() 用來

    2024年02月05日
    瀏覽(24)
  • 修改Mysql數(shù)據(jù)庫(kù)的用戶名和密碼【詳細(xì)】

    修改Mysql數(shù)據(jù)庫(kù)的用戶名和密碼【詳細(xì)】

    數(shù)據(jù)庫(kù)的用戶名默認(rèn)是root 1進(jìn)入到Mysql ????????首先要登錄數(shù)據(jù)庫(kù) ????????1win+r輸入cmd【 管理員身份打開 】或者? 2搜索輸入命令提示符。 2 輸入 mysql -uroot -p 點(diǎn)擊回車 ????????注意:mysql 默認(rèn)用戶名是root ,我以前修改過,所以我輸入了 mysql -uerp -p 回車 , 然后輸

    2024年02月05日
    瀏覽(30)
  • Node.js寫接口連接MySQL數(shù)據(jù)庫(kù)

    1.新建app.js粘貼以下代碼 2.npm init 初始化 3.npm i 安裝依賴 4.npm i mysql 5.npm i express 6. node app.js 啟動(dòng)接口

    2024年02月15日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包