返回

一步教您快速将Sprintboot与腾讯云短信验证码无缝对接

后端

轻松集成:使用 Springboot 与腾讯云短信无缝实现验证码验证

在现代应用程序开发中,确保用户身份验证的安全性和便捷性至关重要。短信验证码通过向用户发送一次性密码,为您的应用程序提供了一层额外的保护。借助腾讯云短信服务和 Springboot,您可以轻松地将这一关键功能集成到您的项目中。

1. 前期准备

在开始之前,您需要完成以下准备工作:

  • 注册腾讯云账号: 访问腾讯云官方网站注册一个新的账号。
  • 创建腾讯云短信应用: 进入短信服务控制台,点击“创建应用”创建一个新的短信应用。
  • 获取 AppID、AppKey: 在创建的短信应用中,获取 AppID 和 AppKey。
  • 配置模板短信: 创建一条新的短信模板,并获取模板 ID。
  • 获取签名: 创建一条短信签名,并获取签名内容。

2. 项目初始化

创建 Springboot 项目:

使用 Spring Initializr 创建一个新的 Springboot 项目。

添加依赖:

pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>com.tencentcloudapi</groupId>
    <artifactId>tencentcloud-sdk-sms</artifactId>
    <version>5.1.16</version>
</dependency>

配置 application.properties 文件:

application.properties 文件中配置以下属性:

# 腾讯云短信应用ID
spring.sms.tencent.appid=123456
# 腾讯云短信应用密钥
spring.sms.tencent.appkey=789012
# 腾讯云短信签名
spring.sms.tencent.sign=abcdefg
# 腾讯云短信模板ID
spring.sms.tencent.templateid=123456

3. 创建短信发送类

新建一个 Java 类:

src/main/java 目录下创建一个名为 SmsService.java 的 Java 类。

编写代码:

import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import com.tencentcloudapi.sms.v20210111.v20210111.SmsClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class SmsService {

    @Value("${spring.sms.tencent.appid}")
    private String appid;

    @Value("${spring.sms.tencent.appkey}")
    private String appkey;

    @Value("${spring.sms.tencent.sign}")
    private String sign;

    @Value("${spring.sms.tencent.templateid}")
    private String templateid;

    public void sendSms(String phoneNumber, String code) {
        try {
            SmsClient client = new SmsClient(appid, appkey);
            SendSmsRequest request = new SendSmsRequest();
            request.setPhoneNumberSet(phoneNumber);
            request.setSignName(sign);
            request.setTemplateId(templateid);
            request.setTemplateParamSet(code);
            SendSmsResponse response = client.SendSms(request);
            System.out.println(response);
        } catch (TencentCloudSDKException e) {
            System.out.println(e.getMessage());
        }
    }
}

4. 实现短信验证码缓存

添加 Redis 依赖:

pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

配置 Redis 连接信息:

application.properties 文件中配置以下属性:

spring.redis.host=localhost
spring.redis.port=6379

创建 Redis 缓存工具类:

src/main/java 目录下创建一个名为 RedisService.java 的 Java 类。

编写代码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    public void set(String key, String value) {
        redisTemplate.opsForValue().set(key, value);
    }

    public String get(String key) {
        return redisTemplate.opsForValue().get(key);
    }
}

编写验证码验证方法:

src/main/java 目录下创建一个名为 VerifyService.java 的 Java 类。

编写代码:

@Service
public class VerifyService {

    @Autowired
    private RedisService redisService;

    public boolean verify(String phoneNumber, String code) {
        String cachedCode = redisService.get(phoneNumber);
        if (cachedCode != null && cachedCode.equals(code)) {
            return true;
        }
        return false;
    }
}

5. 测试验证

发送验证码:

在控制器中创建以下方法:

@PostMapping("/send")
public String send(@RequestParam String phoneNumber) {
    smsService.sendSms(phoneNumber, "123456");
    return "验证码已发送";
}

校验验证码:

在控制器中创建以下方法:

@PostMapping("/verify")
public String verify(@RequestParam String phoneNumber, @RequestParam String code) {
    boolean result = verifyService.verify(phoneNumber, code);
    return result ? "验证码正确" : "验证码错误";
}

结论

通过使用 Springboot 和腾讯云短信服务,您可以轻松地为您的应用程序集成短信验证码验证功能。这将为您的用户提供额外的安全保障,同时又不影响便捷性。通过遵循本文提供的步骤,您将能够快速、无缝地将这一关键功能集成到您的项目中。

常见问题解答

问:如何获取腾讯云 AppID 和 AppKey?

答:在创建短信应用后,您可以在应用详情页中找到 AppID 和 AppKey。

问:如何配置短信模板?

答:在短信服务控制台中,转到“模板管理”,然后创建一个新的短信模板。

问:如何设置短信签名?

答:在短信服务控制台中,转到“签名管理”,然后创建一个新的短信签名。

问:如何使用 Redis 缓存验证码?

答:使用本文提供的 RedisService 类,您可以轻松地设置和获取 Redis 中的验证码。

问:如何测试短信验证码功能?

答:使用本文提供的控制器方法,您可以发送和验证短信验证码,以测试其功能。