首页 > 编程语言 >Java 结合vue 和 阿里 写一个短信验证码功能

Java 结合vue 和 阿里 写一个短信验证码功能

时间:2024-09-09 22:24:22浏览次数:12  
标签:aliyuncs vue 短信 String 验证码 Java Vue import

要实现一个基于 Java、Vue 和阿里云的短信验证码功能,需要完成几个步骤。这个功能通常包括前端(Vue.js)和后端(Java Spring Boot)部分,以及阿里云短信服务的集成。以下是一个大致的实现步骤:

前提条件

  1. 阿里云账户:需要有一个阿里云账户,并开通了短信服务。
  2. Java开发环境:确保有 Java 开发环境和 Spring Boot 框架。
  3. Vue.js开发环境:确保有 Vue.js 开发环境。

1. 阿里云短信服务配置

  1. 登录阿里云控制台,找到短信服务,获取Access Key IDAccess Key Secret
  2. 创建短信模板短信签名,用于发送验证码。

2. 后端(Java Spring Boot)

  1. 创建一个新的 Spring Boot 项目,可以使用 Spring Initializr 来创建项目。
  2. 添加阿里云短信 SDK 依赖: 在 pom.xml 中添加阿里云短信 SDK 依赖:
<dependency>
    <groupId>com.aliyuncs</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.0</version>
</dependency>
<dependency>
    <groupId>com.aliyuncs</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>1.0.13</version>
</dependency>
  1. 配置阿里云短信服务: 创建一个 SmsService 类来发送短信验证码。
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class SmsService {

    @Value("${aliyun.sms.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.sms.accessKeySecret}")
    private String accessKeySecret;

    @Value("${aliyun.sms.signName}")
    private String signName;

    @Value("${aliyun.sms.templateCode}")
    private String templateCode;

    public boolean sendSms(String phoneNumber, String code) {
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dysmsapi.aliyuncs.com");
        DefaultAcsClient client = new DefaultAcsClient(profile);

        SendSmsRequest request = new SendSmsRequest();
        request.setPhoneNumbers(phoneNumber);
        request.setSignName(signName);
        request.setTemplateCode(templateCode);
        request.setTemplateParam("{\"code\":\"" + code + "\"}");

        try {
            SendSmsResponse response = client.getAcsResponse(request);
            return "OK".equals(response.getCode());
        } catch (ClientException e) {
            e.printStackTrace();
            return false;
        }
    }
}
  1. 创建控制器来处理短信请求
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SmsController {

    private final SmsService smsService;

    public SmsController(SmsService smsService) {
        this.smsService = smsService;
    }

    @GetMapping("/sendSms")
    public String sendSms(@RequestParam String phoneNumber) {
        String code = generateCode(); // 生成验证码
        boolean result = smsService.sendSms(phoneNumber, code);
        if (result) {
            return "验证码已发送";
        } else {
            return "验证码发送失败";
        }
    }

    private String generateCode() {
        // 生成6位随机验证码
        return String.format("%06d", (int) (Math.random() * 1000000));
    }
}

3. 前端(Vue.js)

  1. 创建一个 Vue 项目,可以使用 Vue CLI 来创建项目。
  2. 创建一个发送验证码的表单: 在 src/components/SmsForm.vue 中:
<template>
  <div>
    <input v-model="phoneNumber" placeholder="请输入手机号" />
    <button @click="sendSms">发送验证码</button>
    <p v-if="message">{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      phoneNumber: '',
      message: ''
    }
  },
  methods: {
    async sendSms() {
      try {
        const response = await fetch(`/sendSms?phoneNumber=${this.phoneNumber}`);
        const result = await response.text();
        this.message = result;
      } catch (error) {
        this.message = '发送失败';
      }
    }
  }
}
</script>
  1. 配置 Vue.js 代理(如果需要): 在 vue.config.js 中配置代理:
module.exports = {
  devServer: {
    proxy: 'http://localhost:8080' // 后端服务器地址
  }
}

总结

  • 后端:用 Java 和 Spring Boot 配置阿里云短信服务并创建一个接口来发送短信验证码。
  • 前端:用 Vue.js 创建一个表单来输入手机号并发送请求到后端接口。
  • 阿里云:配置短信模板和签名,并集成到 Java 后端服务中。

这只是一个基本的示例,实际应用中可能还需要处理更多的细节,例如验证码的存储、验证逻辑等。

标签:aliyuncs,vue,短信,String,验证码,Java,Vue,import
From: https://blog.51cto.com/u_16694558/11963679

相关文章

  • springboot+vue+mybatis计算机毕业设计老年人健康管理系统+PPT+论文+讲解+售后
    近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,老年人健康管理系统利用计算机网络实现信息化管理,使整个老年人健康管理的发展和服务水平有显著提升。本文拟采用Eclipse开发工具,JSP技术,SSM框架进行开发,后台使用MySQL数据库进行信息......
  • JavaScript知识点轻量版(一)
                                   【学习重点】1.了解JavaScript基础知识2.熟悉常量和变量3.能够使用表达式和运算符4.正确使用语句5.能够掌握数据类型和转换的基本方法6.正确使用函数,对象,数组等核心知识......
  • springboot+vue+mybatis计算机毕业设计网上购物系统+PPT+论文+讲解+售后
    本文首先实现了网上购物系统设计与实现管理技术的发展随后依照传统的软件开发流程,最先为系统挑选适用的言语和软件开发平台,依据需求分析开展控制模块制做和数据库查询构造设计,随后依据系统整体功能模块的设计,制作系统的功能模块图、E-R图。随后,设计框架,依据设计的框架撰写编码......
  • Vue.js 组件设计详解
    在现代Web开发中,组件化设计已经成为构建可维护和可扩展应用程序的关键策略之一。而Vue.js作为一个流行的前端框架,以其简单易用、灵活和高效的特点,成为开发者的首选之一。本文将详细介绍如何设计Vue组件,涵盖从基础到高级的概念和实践,包括组件的创建、通信、复用、优化和......
  • 实现一个基于 Spring Boot 和 Vue.js 的实时消息推送系统
    在现代互联网应用中,实时消息推送已经成为一个非常重要的功能。不论是即时通讯、通知系统,还是其他需要实时互动的应用场景,消息的实时性直接影响到用户的体验和应用的效率。在这篇文章中,我将详细介绍如何使用SpringBoot和Vue.js创建一个实时消息推送系统,并确保每个用户只......
  • 标题:探索 HTML 与 JavaScript 实现的选项卡切换效果
    目录一、HTML结构设计二、JavaScript逻辑处理一、HTML结构设计在给定的HTML代码中,整体结构是创建了多个div元素,每个div元素都包含一个ul(无序列表)和一个div(用于展示内容)。每个ul元素中的li元素代表一个选项卡的标题,而与之对应的div元素中的子div元素则是每个选项卡标......
  • 标题:使用 HTML 和 JavaScript 实现简单的待办事项列表
    目录一、HTML结构设计二、JavaScript逻辑处理一、HTML结构设计整体布局:在HTML部分,整体布局通过一个类名为container的div元素来实现,该元素在页面中水平居中(margin:150pxauto;)。其中包含了一个用于添加事项的输入框和按钮(addBox类),以及一个表格(table元素)用于展......
  • 基于协同过滤推荐算法+springboot+vue的电商系统
    博主主页:猫头鹰源码博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作​主要内容:毕业设计(Javaweb项目|小程序|Python|HTML|数据可视化|SSM|SpringBoot|Vue|Jsp|PHP......
  • Java复习【知识改变命运】第三章
    程序控制结构1switch语句break有三大结构:顺序结构,分支结构,循环结构1switch语句1.表达式的数据类型必须和case语句类型后面一致,或者可以自动转化的数据类型,eg:char和int2.数据类型只能是(charshortintStringbyteenum枚举)3.case语句后面必须是常量或者是常量表......
  • 2-5Java多态
    Java多态多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:多态性是对象多种表现形式的体现。现实中,比如我们按下F1键这个动作:如果当前在Flash界面下弹出的就是AS3的帮助文档;如果当前在Word下弹出的......