成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

SpringSceurity如何實現(xiàn)短信驗證碼功能-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了SpringSceurity如何實現(xiàn)短信驗證碼功能,內(nèi)容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

按需制作網(wǎng)站可以根據(jù)自己的需求進行定制,成都網(wǎng)站設計、成都網(wǎng)站制作構(gòu)思過程中功能建設理應排到主要部位公司成都網(wǎng)站設計、成都網(wǎng)站制作的運用實際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實際意義

一、思考

1、設計思路

在獲取短信驗證碼功能和圖形驗證碼還是有很多相似的地方,所以這里在設計獲取短信驗證的時候,將之前開發(fā)好的的圖形驗證碼進一步整合、抽象與重構(gòu)。

在獲取驗證碼的時候,它們大的不同在于: 圖形驗證碼是通過接口返回獲取給前端。而短信驗證碼而言是通過第三方API向我們手機推送。

但是它們在登陸的時候就有很大的不同了,對于圖形驗證碼而言驗證通過之前就走UsernamePasswordAuthenticationFilter 過濾器了開始校驗用戶名密碼了。

但對于短信登陸而言,確實也需要先現(xiàn)在短信驗證碼是否通過,但是一旦通過他是不走 UsernamePasswordAuthenticationFilter,而是通過其它方式查詢用戶信息來校驗

認證已經(jīng)通過了。

這篇博客只寫獲取獲取短信驗證碼的功能,不寫通過短信驗證碼登陸的邏輯。

2、重構(gòu)設計

這里才是最重要的,如何去設計和整合短信驗證碼和圖形驗證碼的代碼,是我們最應該思考的。如何將相似部分抽離出來,然后去實現(xiàn)不相同的部分。

整理后發(fā)現(xiàn)不同點主要在于

1、獲取驗證碼。因為對于圖形驗證碼需要有個畫布,而短信驗證碼并不需要,所以它們可以實現(xiàn)同一個接口,來完成不同的邏輯。
 2、發(fā)送驗證碼。對于圖形驗證碼來講只要把驗證碼返給前端就可以,而短信驗證碼而言是通過第三方API將驗證碼發(fā)到我們的手機上。
    所以這里也可以通過實現(xiàn)統(tǒng)一接口來具體實現(xiàn)不同的方法。

相同部分我可以通過抽象類來完成實現(xiàn),不同部分可以通過具體的實現(xiàn)類來實現(xiàn)。

SpringSceurity如何實現(xiàn)短信驗證碼功能

AbstractValidateCodeProcessorService 抽象類是用來實現(xiàn)兩種驗證碼可以抽離的部分。ImageCodeProcessorServiceImpl 和

SmsCodeProcessorServiceImpl方法是來實現(xiàn)兩種驗證碼不同的發(fā)送方式。

在簡單看下時序圖可能會更加明白點。

SpringSceurity如何實現(xiàn)短信驗證碼功能

一個接口只有一個方法(processor)就是處理驗證碼,它其實需要做三件事。

1、獲取驗證碼。2、將驗證碼存入session。3、將驗證碼信息通過短信或者圖形驗證碼發(fā)送出去。

首先講生成獲取驗證碼,這里有一個公共接口和兩個實現(xiàn)類

SpringSceurity如何實現(xiàn)短信驗證碼功能

對于保存驗證碼信息而言,可以在直接在 AbstractValidateCodeProcessorService抽象類來完成,都不需要去實現(xiàn)。

對發(fā)送驗證碼信息而言,只需要實現(xiàn)AbstractValidateCodeProcessorService抽象類的send發(fā)送驗證碼接口即可。

整個大致接口設計就是這樣,具體的可以通過代碼來展示。

二、代碼實現(xiàn)

1、驗證碼屬性

短信驗證碼和圖形驗證后包含屬性有codeexpireTime,短信驗證碼只有這兩個屬性,而圖形驗證碼還多一個BufferedImage實例對象屬性,所以將共同屬性進行抽取

,抽取為ValidateCode類,代碼如下:

ValidateCode實體

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ValidateCode {

 private String code;

 private LocalDateTime expireTime;

 public boolean isExpired() {
 return LocalDateTime.now().isAfter(expireTime);
 }

}

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞標題:SpringSceurity如何實現(xiàn)短信驗證碼功能-創(chuàng)新互聯(lián)
本文URL:http://jinyejixie.com/article34/djsjpe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、響應式網(wǎng)站、App設計微信小程序、軟件開發(fā)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
鲜城| 濮阳县| 大城县| 祁门县| 泽州县| 长汀县| 常熟市| 绥中县| 法库县| 安阳市| 乡宁县| 灵石县| 宜君县| 邯郸市| 马公市| 娄烦县| 西和县| 盐边县| 锡林浩特市| 土默特右旗| 合水县| 清新县| 航空| 白玉县| 唐山市| 内江市| 清河县| 绍兴市| 孟州市| 铅山县| 福鼎市| 界首市| 安平县| 平山县| 库尔勒市| 沈阳市| 杂多县| 滦南县| 久治县| 凭祥市| 九台市|