<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          圖片驗證碼的需求分析、優(yōu)雅實現(xiàn)

          共 957字,需瀏覽 2分鐘

           ·

          2020-10-15 04:22

          需求描述

          通常我們最登錄的時候,為了防止多次嘗試或攻擊登錄接口,我們需要弄一個驗證碼的功能,只有輸入驗證碼正確的情況下,我們才會去做密碼校驗,這樣就減少了密碼可能會被試出來的可能。

          需求分析

          這個功能設(shè)計要點有兩個:

          第一點、驗證碼圖片的生成

          驗證碼圖片的生成使用到io流,網(wǎng)上很多生成驗證碼的工具,比如說使用awt的Graphics2D 生成的。但如果要調(diào)整驗證碼的個數(shù)、樣式等那就有點麻煩了。這里給大家介紹一個驗證碼開源組件com.google.code.kaptcha。可以靈活調(diào)整驗證碼的樣式。

          第二點、驗證碼的存儲方式

          如果只是一個單體項目,可以存在session當(dāng)中,如果集成了shiro,也可以放shiro的session中。

          而在分布式系統(tǒng)當(dāng)中,需要考慮驗證碼的共享功能。

          1、可以存儲在session中,如需要集成spring session,把session存到redis等存儲中間件中session驗證碼共享功能。

          2、shiro集成了redis的,就可以存在shiro session當(dāng)中實現(xiàn)共享。

          3、當(dāng)然,你也可以直接把驗證碼存到redis等中間件中,不需要通過session,但是key就必須唯一。

          偽代碼邏輯

          1、引入com.google.code.kaptcha的pom坐標(biāo)

          2、生成驗證碼的配置信息,配置樣式等

          3、調(diào)用producer接口生成驗證碼和圖片,并保存到session中

          4、使用servlet輸出流把驗證碼圖片

          5、傳到客戶端校驗驗證碼

          **建議:**可以定義一個驗證碼開關(guān),開發(fā)時候可以關(guān)閉驗證碼功能,提高效率。

          代碼實現(xiàn)

          第一步、導(dǎo)入驗證碼組件pom包

          第二步、生成驗證碼配置

          第三步、生成驗證碼圖片,把驗證碼存到session中

          第四步、校驗驗證碼是否正確

          至此,驗證碼功能實現(xiàn)完畢~~

          推薦閱讀
          IntelliJ IDEA 推薦設(shè)置講解
          圖解 SQL,這也太形象了吧!
          還在寫B(tài)ug?GitHub官方代碼掃描工具上線,免費查找漏洞
          單點登錄的三種實現(xiàn)方式,你會幾種?
          瀏覽 37
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  三级www| 免费的操逼网站 | 久久蜜桃视频 | 玖玖视频二区 | 久久精品国产亚洲AV无码蜜芽 |