最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 19:51:29
文檔

node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能

node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能:這次給大家?guī)韓ode實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能,node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來看一下。實(shí)現(xiàn)這里的圖形驗(yàn)證碼我是用的node里svg-captcha模塊,可以全部支持字符和數(shù)字,全平臺支持,用起來很簡單。1.安裝cnpm
推薦度:
導(dǎo)讀node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能:這次給大家?guī)韓ode實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能,node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來看一下。實(shí)現(xiàn)這里的圖形驗(yàn)證碼我是用的node里svg-captcha模塊,可以全部支持字符和數(shù)字,全平臺支持,用起來很簡單。1.安裝cnpm
這次給大家?guī)韓ode實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能,node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來看一下。

實(shí)現(xiàn)這里的圖形驗(yàn)證碼我是用的node里svg-captcha模塊,可以全部支持字符和數(shù)字,全平臺支持,用起來很簡單。

1.安裝

cnpm i svg-captcha --save

2.在使用的地方導(dǎo)入

var svgCaptcha = require('svg-captcha');

3.獲取驗(yàn)證碼

3-1 安裝 cookie-parser ,作用是將獲取到的session保存到cookie,方便前端訪問驗(yàn)證

cnpm i cookie-parser --save

3-2 使用 cookie-parser

const cookieParase = require('cookie-parser');
app.use(cookieParase());

這樣就可以在項(xiàng)目里使用cookie了

3-3 獲取驗(yàn)證碼

// 獲取驗(yàn)證碼
 getCaptcha(req, res, next){
 var captcha = svgCaptcha.create({ 
 // 翻轉(zhuǎn)顏色 
 inverse: false, 
 // 字體大小 
 fontSize: 36, 
 // 噪聲線條數(shù) 
 noise: 2, 
 // 寬度 
 width: 80, 
 // 高度 
 height: 30, 
 }); 
 // 保存到session,忽略大小寫 
 req.session = captcha.text.toLowerCase(); 
 console.log(req.session); //0xtg 生成的驗(yàn)證碼
 //保存到cookie 方便前端調(diào)用驗(yàn)證
 res.cookie('captcha', req.session); 
 res.setHeader('Content-Type', 'image/svg+xml');
 res.write(String(captcha.data));
 res.end();
 },

做到這只是實(shí)現(xiàn)了生成驗(yàn)證碼的功能,那么要訪問呢?

4.編寫后臺路由

// 獲取驗(yàn)證碼
router.get('/api/getCaptcha', function(req, res, next) {
 return api.getCaptcha(req, res, next);
})

當(dāng)前端調(diào)用 /api/getCaptcha 這個接口的時候,返回驗(yàn)證碼信息,是svg格式

5.前端訪問

<img src="/api/getCaptcha" alt="captcha" >

但是現(xiàn)在我們又有需求了,當(dāng)點(diǎn)擊這個驗(yàn)證碼的時候,驗(yàn)證碼會刷新

6.實(shí)現(xiàn)點(diǎn)擊驗(yàn)證碼刷新

更改一下剛剛驗(yàn)證碼的結(jié)果,給他加一個外層a標(biāo)簽,并給他綁定一個點(diǎn)擊事件,我這里用了 vue ,所以是 @click ,其他框架同理.

<a href="#" rel="external nofollow" @click="editCaptcha">
 <img src="/api/getCaptcha" alt="" ref="imgYzm">
</a>

點(diǎn)擊事件 editCaptcha

editCaptcha () {
 this.$refs.imgYzm.src = '/api/getCaptcha?d='+Math.random()
},

這樣就實(shí)現(xiàn)了點(diǎn)擊驗(yàn)證碼刷新的問題

7.前端驗(yàn)證驗(yàn)證碼

剛剛我們在后臺得到了驗(yàn)證碼,但是前端要怎么驗(yàn)證呢?

記得在3-2的時候我們安裝了 cookie-parser ,并且在3-3里將生成的session保存在cookie里,這里我們前端就可以通過訪問這個cookie拿到驗(yàn)證碼的值了。

為什么要保存在cookie里? 因?yàn)楹蠖松傻膕ession我們前端是訪問不到的,如果等訪問到的話,那還談什么安全性可言,所以保存一份在cookie里供前端訪問。

let captcha = document.cookie.split('=')[1]
 if(this.yzm != captcha){
 return this.$message.warning('驗(yàn)證碼錯誤')
 }

最后的前端輸入賬號密碼驗(yàn)證碼做登錄驗(yàn)證等等我就不多概述了。具體思想就是這樣。

相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注Gxl網(wǎng)其它相關(guān)文章!

推薦閱讀:

Vue實(shí)現(xiàn)雙向數(shù)據(jù)綁定功能(附代碼)

ES6仿Vue實(shí)現(xiàn)雙向綁定功能

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能

node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能:這次給大家?guī)韓ode實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能,node實(shí)現(xiàn)登錄時圖片驗(yàn)證碼功能的注意事項(xiàng)有哪些,下面就是實(shí)戰(zhàn)案例,一起來看一下。實(shí)現(xiàn)這里的圖形驗(yàn)證碼我是用的node里svg-captcha模塊,可以全部支持字符和數(shù)字,全平臺支持,用起來很簡單。1.安裝cnpm
推薦度:
標(biāo)簽: 圖片 登錄 功能
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top