av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

java - 圖片驗證碼實現(xiàn)原理

瀏覽:105日期:2023-11-16 11:08:42

問題描述

**測試網(wǎng)站:http://con.monyun.cn:9960/acc...

在這個頁面中有一個驗證碼。這個驗證碼的url是

<img src='http://www.4tl426be.cn/aut_checkCode.hts?=0.8963835985936632' class='icd'>

如何實現(xiàn)點擊驗證碼的時候更改顯示圖片??

說明:(1) 當(dāng)你點擊驗證碼圖片的時候 ,img標(biāo)簽的src屬性的 后面部分的數(shù)字會更改,一旦數(shù)字更改會就會引起瀏覽器訪問新的url獲取數(shù)據(jù)

(2)新的url中查詢字符串只有value沒有name,那么是不是說就服務(wù)器端就無法獲取到這個數(shù)字值?0.8963835985936632

服務(wù)器端有辦法獲取這個數(shù)字值嗎??

(3)假若 沒有辦法獲取到數(shù)字值。 服務(wù)器端處理請求,返回二進制圖像數(shù)據(jù)。這個時候會為圖片生成一個token嗎? 如果有生成那么如何傳遞給客戶端?

(4)用戶提交驗證碼。服務(wù)器端處理,那么如何驗證用戶提交的驗證碼是否正確?服務(wù)器端根據(jù)什么能夠從redis中獲取到正確的驗證碼?

各位說說給回復(fù)就頂!**

問題解答

回答1:

謝邀, 一般來說, 驗證碼的工作步驟是這樣的:

實際上是服務(wù)器生成了一個4位字符串, 用這4位字符串生成圖片寫到response中, 返回給瀏覽器, 并把這個4位字符串存在了當(dāng)前session中.

瀏覽器提交后, 用提交的字符串和session中的字符串進行對比, 完成驗證碼的校驗.

如果不用session比如可以設(shè)置到cookie中如下(key=test, value=test):java - 圖片驗證碼實現(xiàn)原理

回答2:

1.后面數(shù)字更改是避免瀏覽器緩存問題、2.不用使用任何參數(shù),服務(wù)端會自動去按照時間銼什么的生成一個驗證碼(想看服務(wù)端是否能獲取)

java - 圖片驗證碼實現(xiàn)原理

3.驗證碼原理就是生成一串隨機數(shù)先存入session,最后生成images傳給客戶端給你識別,用戶提交驗證碼答案,服務(wù)端對你得答案和session當(dāng)中的隨機數(shù)進行對比,一樣就說明驗證成功

4.如3

5.redis配合使用一般都會用到token或者session之內(nèi)的,這樣可以標(biāo)識這個驗證碼到底是哪一個用戶的,比如如下key

>keys *>uid_100_login_verify偽代碼

獲取驗證碼

User u=User();u.tmp_id=100;//唯一標(biāo)識,傳給客戶端表單Random rand=new Random(種子);int v=rand.rand();//一般會生成其他得英文字母配合生成復(fù)雜的redisCli.add('uid_100_login_verify',random)//key,valueres.return(new Verify());

驗證

User u=User();u.tmp_id=$POST[’tmp_id’];//獲取客戶端string value=redisCli.get('uid_100_login_verify');//key return valueif($POST[’verify_code’]===value){ return '驗證成功';}回答3:

第一個:驗證碼的大致流程就是和你描述的一樣的。

第二個:生成驗證碼是不用往后臺傳值的,你給的例子,后面的那串?dāng)?shù)字的改變其實是為了實現(xiàn)重新請求 URL 而已,一般是圖片鏈接指向生成驗證碼的鏈接,點擊后使用 js 來給連接進行改變,就是后面加一串隨機數(shù),這樣瀏覽器檢測到 src 后面的連接改變了(那串隨機字符串就是這個作用),然后就會重新請求后臺,獲取重新生成的驗證碼圖片。

第三個:后臺返回二進制圖片后,不需要生成 token ,但是需要把生成驗證碼的那串?dāng)?shù)字存到 session 里。要保存在服務(wù)器端,才安全,不需要返回到客戶端。

第四個:用戶輸入提交的驗證碼后,就把用戶提交的驗證碼數(shù)字,和服務(wù)端 session 里的數(shù)字進行對比。 如果一樣的話,就驗證通過。

至于最后把驗證碼放到redis里,你可以去搜索一下,如何把 session 存到 redis 里,相關(guān)的資料。

回答4:

后臺代碼大體上是

public void genAuthImage(){

//生成token uuid //寫入cookieresponse.addCookie();--->實際上是設(shè)置set-cookie頭信息

//生成圖片使用response寫出end}前端:

前端:java - 圖片驗證碼實現(xiàn)原理

chrome 檢查

java - 圖片驗證碼實現(xiàn)原理

控制臺

java - 圖片驗證碼實現(xiàn)原理

不確定的結(jié)論: response返回響應(yīng)類型為image/jpg的時候 無法設(shè)置cookie。原因各位有看到的朋友可以解釋下嗎

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品一区在线 | 欧美一区二区三区久久精品 | 国产精品污www一区二区三区 | 国产精品久久久久久久久图文区 | 九九热精品视频 | 草久久久 | 欧美中文 | 国产欧美精品一区二区色综合朱莉 | 精品一区二区三区在线视频 | 国产精品美女久久久久aⅴ国产馆 | 性生活毛片 | 蜜臀网| 天天干天天玩天天操 | 亚洲精品aⅴ | 日本精品视频 | 日韩成人免费在线视频 | 日本福利视频免费观看 | 午夜三区| 色男人天堂av | 午夜一区二区三区在线观看 | 国产999精品久久久影片官网 | 一级片在线播放 | 精品国产一区二区三区免费 | 中文字幕精品视频在线观看 | 久久之精品| 精品国产91乱码一区二区三区 | 黑人巨大精品欧美一区二区免费 | 国产美女在线播放 | 成年人免费在线视频 | av成年人网站| 国产电影一区二区在线观看 | 国产精品一区二区av | 亚洲视频中文字幕 | 中文字幕高清免费日韩视频在线 | 一级毛片在线播放 | 欧美成人h版在线观看 | 2018国产大陆天天弄 | 在线视频中文字幕 | 亚洲天堂一区二区 | 深夜福利亚洲 | 亚洲视频在线免费观看 |