亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用基于易水公共組件的驗證碼

發布時間:2021-10-14 12:03:11 來源:億速云 閱讀:136 作者:iii 欄目:大數據

本篇內容主要講解“如何使用基于易水公共組件的驗證碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用基于易水公共組件的驗證碼”吧!

快速啟動

  1. 先引入相關依賴

<dependency>
    <groupId>com.yishuifengxiao.common</groupId>
    <artifactId>common-spring-boot-starter</artifactId>
    <version>4.1.2</version>
</dependency>
  1. 將驗證碼工具注入到需要使用到驗證碼的地方

注入代碼如下:

@Autowired
private CodeProcessorHolder codeProcessorHolder;

圖形驗證碼

生成圖形驗證碼

在注入一個驗證碼工具后,通過以下代碼即可快速生成一個圖形驗證碼。 具體的示例代碼如下:

    @GetMapping("/code/image")
    @ResponseBody
    public Response<String> image(HttpServletRequest request, HttpServletResponse response){
        try {
            codeProcessorHolder.findValidateCodeProcessor(CodeType.IMAGE).create(new ServletWebRequest(request,response));
        } catch (ValidateException e) {
            return Response.error(e.getMessage());
        }
       return Response.suc();
    }

在以上代碼后,用戶即可通過

http://ip:port/code/image?image=唯一的隨機值

獲取圖形驗證碼了。

在上述請求中,用戶應該將image參數存儲起來,因為在校驗驗證碼時需要用到。

驗證圖形驗證碼

驗證圖形驗證碼的示例代碼如下:

    @GetMapping("/image/validate")
    @ResponseBody
    public Response<String> validate(HttpServletRequest request, HttpServletResponse response){
        try {
            codeProcessorHolder.findValidateCodeProcessor(CodeType.IMAGE).validate(new ServletWebRequest(request,response));
        } catch (ValidateException e) {
            return Response.error(e.getMessage());
        }
        return Response.suc();
    }

用戶在驗證圖形驗證碼時,即可用過

http://ip:port/image/validate?image=唯一的隨機值&image_code=驗證碼內容

來判斷驗證碼是否正確。

【注意】上述請求中image參數的值應該與請求中圖形驗證碼的url中的image參數的值保持一致。

特殊提示:對于前后端部署在一起的單體應用,上述兩個請求中的image參數都可以省略掉。

配置參數

除此之外,圖形驗證碼相關的配置有

# 驗證碼的長度,默認為4
yishuifengxiao.code.image.length=4
# 驗證碼的失效時間,單位秒,默認為300s
yishuifengxiao.code.image.expireIn=300
#  驗證碼是否包含字母,默認包含
yishuifengxiao.code.image.isContainLetter=true
# 驗證碼是否包含數字,默認包含
yishuifengxiao.code.image.isContainNumber=true
# 驗證碼的請求參數
yishuifengxiao.code.image.codeKey=image
# 驗證碼對應的值的參數
yishuifengxiao.code.image.codeValue=image_code
# 圖形驗證碼的圖形寬度
yishuifengxiao.code.image.width=70
# 圖形驗證碼的圖形高度
yishuifengxiao.code.image.height=28

<b>注意:</b>

在生成驗證碼和驗證驗證碼的請求中,請求參數中的image參數由yishuifengxiao.code.image.codeKey屬性,image_code參數由yishuifengxiao.code.image.codeValue屬性決定。在某些極端情況下,可以通過這兩個配置修改請求參數。

如果服務是部署在阿里云ECS上面,由于阿里云默認關閉了25號端口,因此使用默認的端口發送郵件時會導致郵件驗證碼發送失敗,因此需要提交工單到阿里云申請開啟25號端口,或者使用465端口。

郵件驗證碼

在使用郵箱驗證碼時,需要先進行下述配置:

  1. 在項目中導入郵件發送相關的依賴

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>
  1. 在項目的配置文件中加入郵件發送相關的配置屬性

spring.mail.default-encoding=UTF-8
spring.mail.host=郵箱服務器
spring.mail.username=完整的郵箱地址
spring.mail.password=密碼
spring.mail.port=465
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback=false
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

如果不加入以上配置,在使用郵件驗證碼時會提示 【驗證碼處理器不存在】,且不能正確發送郵件驗證碼。

【注意】在阿里云ECS服務器上,25端口默認是關閉的,因此最好配置465端口

發送郵件驗證碼

郵件驗證碼的發送代碼與圖形驗證碼的發送方法基本一致,只需要將CodeType.IMAGE改成CodeType.EMAIL即可。

    @GetMapping("/code/email")
    @ResponseBody
    public Response<String> email(HttpServletRequest request, HttpServletResponse response){
        try {
            codeProcessorHolder.findValidateCodeProcessor(CodeType.EMAIL).create(new ServletWebRequest(request,response));
        } catch (ValidateException e) {
            return Response.error(e.getMessage());
        }
        return Response.suc();
    }

加入上述配置以后,即可通過

http://ip:port/code/email?email=目標郵箱地址

發送郵箱驗證碼了。

驗證郵箱驗證碼

示例代碼如下:

    @GetMapping("/email/validate")
    @ResponseBody
    public Response<String> validate(HttpServletRequest request, HttpServletResponse response){
        try {
            codeProcessorHolder.findValidateCodeProcessor(CodeType.EMAIL).validate(new ServletWebRequest(request,response));
        } catch (ValidateException e) {
            return Response.error(e.getMessage());
        }
        return Response.suc();
    }

加入上述配置以后,即可通過

http://ip:port/email/validate?email=目標郵箱地址&email_code=驗證碼

來驗證了。

配置參數

除此之外,組件還提供了一些額外的配置

# 驗證碼的長度,默認為4
yishuifengxiao.code.email.length=4
# 驗證碼的失效時間,單位秒,默認為1800s
yishuifengxiao.code.email.expireIn=1800
#  驗證碼是否包含字母,默認包含
yishuifengxiao.code.email.isContainLetter=true
# 驗證碼是否包含數字,默認包含
yishuifengxiao.code.email.isContainNumber=true
# 驗證碼的請求參數
yishuifengxiao.code.email.codeKey=email
# 驗證碼對應的值的參數
yishuifengxiao.code.email.codeValue=email_code

類似地,驗證碼的請求參數中的email參數由yishuifengxiao.code.email.codeKey屬性,email_code參數由yishuifengxiao.code.email.codeValue屬性決定。

進階配置

在郵件驗證碼功能中,組件對郵箱驗證碼做了一個缺省性實現,在用戶對郵件驗證碼的格式有自定義需求時,可以通過在spring中注入一個名為emailCodeSender的實例來實現自己的模板內容。

示例代碼如下

@Component("emailCodeSender")
public class EmailCodeSender implements CodeSender<EmailCode> {
    
    @Override
	public void  send(String target, EmailCode emailCode, CodeType codeType){
        //實現自己的發送邏輯
    }
}

短信驗證碼

由于短信驗證碼的特殊性,不同的短信提供商有不同的發送接口,因此在使用短信驗證碼功能之前,需要完成自己的名為 smsCodeSender短信發送器,并將其注入到spring上下文之中。

示例代碼如下

@Component("smsCodeSender")
public class SmsCodeSender implements CodeSender<SmsCode> {
    
    @Override
	public void  send(String target, EmailCode emailCode, CodeType codeType){
        //實現自己的發送邏輯
    }
}

發送短信驗證碼

在完成前置配置之后,即可發送短信驗證碼了。

示例代碼如下

    @GetMapping("/code/sms")
    @ResponseBody
    public Response<String> sms(HttpServletRequest request, HttpServletResponse response){
        try {
            codeProcessorHolder.findValidateCodeProcessor(CodeType.SMS).create(new ServletWebRequest(request,response));
        } catch (ValidateException e) {
            return Response.error(e.getMessage());
        }
        return Response.suc();
    }

加入上述配置以后,即可通過

http://ip:port/code/sms?phone=目標手機號

發送郵箱驗證碼了。

驗證短信驗證碼

示例代碼如下:

    @GetMapping("/sms/validate")
    @ResponseBody
    public Response<String> validate(HttpServletRequest request, HttpServletResponse response){
        try {
            codeProcessorHolder.findValidateCodeProcessor(CodeType.SMS).validate(new ServletWebRequest(request,response));
        } catch (ValidateException e) {
            return Response.error(e.getMessage());
        }
        return Response.suc();
    }

加入上述配置以后,即可通過

http://ip:port/sms/validate?phone=目標手機號&phone_code=驗證碼

來驗證了。

參數配置

# 驗證碼的長度,默認為4
yishuifengxiao.code.sms.length=4
# 驗證碼的失效時間,單位秒,默認為300s
yishuifengxiao.code.sms.expireIn=300
#  驗證碼是否包含字母,默認包含
yishuifengxiao.code.sms.isContainLetter=true
# 驗證碼是否包含數字,默認包含
yishuifengxiao.code.sms.isContainNumber=true
# 驗證碼的請求參數
yishuifengxiao.code.sms.codeKey=phone
# 驗證碼對應的值的參數
yishuifengxiao.code.sms.codeValue=phone_code

類似地,驗證碼的請求參數中的phone參數由yishuifengxiao.code.sms.codeKey屬性,phone_code參數由yishuifengxiao.code.sms.codeValue屬性決定。

驗證碼的更多用法請參見一下資源

到此,相信大家對“如何使用基于易水公共組件的驗證碼”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

牡丹江市| 崇左市| 宁河县| 海原县| 米泉市| 故城县| 手机| 财经| 三原县| 内江市| 东丰县| 乐都县| 柳州市| 淮安市| 北川| 桑植县| 兴安盟| 西乡县| 襄城县| 留坝县| 香河县| 永福县| 金阳县| 专栏| 泾源县| 顺平县| 磐石市| 广昌县| 高唐县| 乐安县| 义乌市| 新民市| 温宿县| 江川县| 南宁市| 安庆市| 西藏| 神农架林区| 盖州市| 大化| 吉水县|