天道酬勤,学无止境

使用 SSM 框架实现发送手机短信验证码

手机发送短信

  • 内容
    • 一、手机发送短信
      • 1. 前端界面代码
      • 2. UserInfoController 控制器
      • 4. 具体实现
  • 总结

内容


一、手机发送短信

1. 前端界面代码

10秒内不能重复发送验证码

//短信发送
$('.vcode-send').click(function () {
	if ($(this).hasClass('disabled')) {

	} else {
        var self = $(this);
        var count = 10;
        self.addClass('disabled');
        self.text(count + '秒后重新获取');
        var timer = setInterval(function () {
            count--;
            if (count > 0) {
                self.text(count + '秒后重新获取');
            } else {
                clearInterval(timer);
                self.text('重新获取验证码');
                self.removeClass("disabled");
            }
    	}, 1000);

        var phone = $("#phone").val();
        $.get(domainUrl + "/users/sendVerifyCode", {phone:phone}, function (data) {
            console.log(data);
            if(data.code == 200){
                popup("发送成功")
            } else {
                popup(data.msg);
            }
        });
    }
});

2. UserInfoController 控制器

package com.yy.springboot.controller;

@RestController
@RequestMapping("/users")
public class UserInfoController {
    @Autowired
    private IUserInfoService userInfoService;

    @GetMapping("/sendVerifyCode")
    public JsonResult<UserInfo> sendVerifyCode(String phone) {
        return userInfoService.sendVerifyCode(phone);
    }
}

4. 具体实现

在这里插入图片描述

// URL 和 appkey 是上面配置文件中的URL和appkey
// 1:下面的手机号是把你需要发送短信的手机号与下面字符串进行拼接
// 2:下面的验证码是把你创建的验证码与下面字符串进行拼接
// 3:下面的 appkey 就是你从短信服务商哪里拿到的 appkey
private String url = https://way.jd.com/kaixintong/kaixintong?mobile=13205516161&content=【凯信通】您的验证码是:123456&appkey=您申请的APPKEY 点此获取APPKEY;

private String appkey;

@Override
public JsonResult<UserInfo> sendVerifyCode(String phone) {
    // 1、创建随机验证码(4位)
    String code = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 4);

    // 2、发送短信
    // java 如何发起 Http 请求
    // 参数1:请求 url,参数2:响应值类型对象(将返回值转换成什么类型对象)
    // 参数3:路径上的参数值
    RestTemplate restTemplate = new RestTemplate();
    String message = restTemplate.getForObject(url, String.class);
    System.out.println("message = " + message);
    if (!message.contains("Success")) {
        throw new LogicException("短信发送失败");
    }

    // 4、缓存验证码-以 phone 为 key,code 为 value,这里我用的是 Redis 缓存了验证码
    // 具体代码你自己实现,很简单,当然你也可以使用 Session 保存起来,用于注册时的验证码校验
    return userInfoRedisService.sendVerifyCode(phone, code);
}

总结

上面就是手机发送短信验证码的总结了,代码仅供参考,欢迎讨论交流。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 基于SSM的校园二手交易平台
    基于SSM的校园二手交易平台 完整的设计报告在后面喜欢就点一下star哟,谢谢亲的支持 Java版本:1.8 数据库:MySQL 框架:Spring + Spring MVC + MyBatis 服务器:Tomcat 前端解析框架:Thymeleaf 开发工具:Idea 2017 版本管理工具:Maven 版本控制工具:GitHub 代码已经上传github,下载地址:下载地址 3.2 实现过程 3.2.1 商品首页实现 这里写图片描述 这里写图片描述 其他部分实现效果 这里写图片描述 这里写图片描述 3.2.2 二手商城实现 这里写图片描述 商城商品展示 这里写图片描述 这里写图片描述 这里写图片描述 3.2.3 商品详情实现 这里写图片描述 留言 这里写图片描述 3.2.4 站内搜索引擎实现 这里写图片描述 搜索结果 这里写图片描述 3.2.5 发布商品实现 这里写图片描述 这里写图片描述 这里写图片描述 3.2.6 发布求购信息实现 这里写图片描述 3.2.7 个人信息页面实现 这里写图片描述 这里写图片描述 3.2.8 我发布的商品实现 这里写图片描述 点击修改 这里写图片描述 3.2.9我发布的求购信息实现 这里写图片描述 这里写图片描述 3.2.10购物车实现 这里写图片描述 点击添加数量和减少 这里写图片描述 3.2.11登录注册实现 这里写图片描述 这里写图片描述
  • SSM项目对接 阿里云短信
    1.注册阿里云账号 2.阿里云官网:https://www.aliyun.com/ 3.设置短信签名 注册成功后,点击登录按钮进行登录。 登录后选择 控制台首页 右上角 点击选择 短信服务 进入短信服务管理页面,选择国内消息菜单: 签名: 项目名称 适用场景: 验证码 (一人只可以设置一个) 目前个人用户只可以申请 验证码的签名 4.设置短信模板 5. 设置 access Key 在发送短信时需要进行身份认证,只有认证通过才能发送短信。本小节就是要设置用于发送短信时进行身份认证的key和密钥。鼠标放在页面右上角当前用户头像上,会出现下拉菜单: 因为我们只是用来短信发送的 所以选择权限可以搜索 SMS 选中下面两个权限 创建 点击 开始创建 注意!!!! 这里 AccessKey 只会在这里显示一次密码 所以务必保存好 可以记录在记事本里 也可以直接点击下载AccessKey文件 创建好以后 进入 用户详情 我们可以进行对该 accesskey的禁用和删除 可以进行一系列的设置 由于短信服务是收费服务,所以还需要进行充值才能发送短信 发送短信 6.1 导入Maven依赖 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.3.1<
  • 基于Java爬虫的课堂考勤管理系统(毕业设计论文)
    开发环境和选用的架构: 本系统中采用的开发环境是Windows10+JDK8+Tomcat8+MySQL5.6 使用IDEA作为开发工具,GIT用作版本控制,Maven管理依赖 采用SSM+SpringBoot+HTML+CSS+JQuery+Ajax的架构 使用了Java爬虫,正则表达式处理,定时任务,邮件发送,数据加密,前端参数校验,动态加载,JS自动填充下拉框,Ajax请求发送等功能 以下是我个人的毕业论文,实现代码有删减,完整代码可以参考: https://gitee.com/huanfengys_admin/hfengSpringBootTestHello 摘 要............................................ I 关键字............................................ I Abstract......................................... II Key words....................................... III 1 绪论........................................... 1 1.1 引¨
  • Springboot 整合SpringSecurity实现账号密码+手机验证码登陆
    Springboot 整合SpringSecurity实现账号密码+手机验证码登陆 示例说明版本示例安装 Spring-security 介绍为什么不用 shiroSpring-Security 做用户认证、授权CSRF 跨站请求伪造防护iframe 嵌入提升用户、编码体验更多 SpringSecurity 是 Spring 提供安全管理框架。核心内容包含认证、授权、攻击防护。实际上SpringSecurity 已经发展了多年了,但是在 SSM/SSH 中整合 SpringSecurity 相较于 Shiro 来说显得要麻烦很多,所以在安全管理框架这块一直都是 Shiro 的天下。 自从有了 SpringBoot ,SpringSecurity 的完美兼容让其价值完整的体现了出来。在 SpringBoot 中基本零配置就可以使用 SpringSecurity了。 示例说明 网上教程一大堆,一知半解导致写的错误一大堆,出错了又要去搜索,知识点越来越多,陷入恶性循环。 这里提供一个完整Demo ,虽然不一定说完全理解SpringSecurity,但是可以了解其运行方式。 示例中提供了 2 种认证方式,账号密码、手机验证码,请根据需要自定义。 版本 SpringBoot 2.3.3JDK 1.8Mybatis 2.1.3Mysql 5.7+ 示例安装 下载 Demo GitHub
  • 探花交友Day01总结
    探花交友Day01总结 MySQL 和 MongoDB MongoDB: 用于海量数据的存储 MySQL: 用于少量数据的存储 单点登录系统 — 登录 分发JWT令牌 优点: 1.用户只需要登录一次,就可以访问所有可以相互信任的应用系统 --- 用于登录 统一的认证入口 2.用户体验好 缺点: 1本升级会很麻烦 2.SSO系统压力大 工作流程: 1.登录 2.分发JWT令牌 验证 token -- 至少包含用户id,若包含密码等敏感信息会不安全 3.判断是否有效 首次请求:客户端发起请求--->SSO单点登录系统--->生成token--->返回给客户端 再次请求:客户端发起请求:请求头携带token--->Server系统请求SSO系统--->SSO系统解密token发送给Server系统 阿里云短信验证服务 注册阿里云账户,保存四个信息用于发送短信验证码:签名 模板code 子用户一对密钥 用户登录名称 tanhua@1789316296053529.onaliyun.com AccessKey ID LTAI5t8WNNCkjcLfu2dN1mTB AccessKey Secret lG2LURBMSG2pAy4DjC5K6lqdYSGsHs 注册登录 注册登录流程: 用户通过手机验证码进行登录,如果是第一次登录,需要注册信息. 用户首次登录需要输入输入手机号+验证码 ---
  • 万字长文 详解Spring Security 验证码的生成
    本文思维导图 图1-1 验证码生成 概图 概述 总所周知,验证码方式的登录模式十分的普遍,不过 Spring Security 并没有提供比较好的原生解决方案,但是我们可以 do it by ourselves!,本文的篇幅相对比较长,因此分上下篇分别来介绍。上篇主要介绍:验证码的生成,下篇对自定义验证码登录的流程进行讲解。 我们比较常见的验证码主要有两种:图形验证码以及短信验证码,相对来说不是特别的复杂。可能会有人有疑惑:为什么简单的验证码生成需要花费一整篇幅来介绍呢?原因当然是:身为菜鸟的我也有一个架构师的梦!验证码的生成会结合模板方法模式一起讲解。 初探模板方法模式 模板方法模式属于一种行为型的设计模式,主要是用来解决复用和扩展两个问题。 模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到某些子类中实现。该模式可以让子类在不改变算法整体结构的情况,重新定义算法中的某些步骤细节。 这里提到了一个算法骨架的概念,算法 并非是指数据结构中的“算法”,可以理解为广义上的业务逻辑;骨架 架子其实就是模板;总的来说:算法骨架 可以理解为包含广义业务逻辑的模板方法。 实践出真知 绝大部分的设计模式的原理都十分的简单,难得是将原理落实到实践中,解决实际问题。 我们知道模板方法模式主要是用来解决 复用 和 扩展 这两个问题,结合到实际情况中来分析;验证码生成有哪些地方需要 复用 和
  • 前端开发之ssm框架下的购物车系统实战
    SSM框架实现Javaweb购物车系统—前端开发实战 想一想,从开始学SpringMVC开始,到现在两个月有了吧~~~边学ssm框架边做这个浅层的购物车系统,真的太心酸了!!实战过程中也学到了很多新的技术,不得不服框架的配置文件,配置文件搞定了,其他就顺风顺水(不过在你理解框架操作下O(∩_∩)O哦) 那ssm框架的原理到底是什么呢?↓↓↓ 其实吧,个人认为ssm框架也是在mvc模式上发展来的,在一切文件都配置好的情况下,controller层、service层、Dao层仍然是不可缺的部分,也是业务处理的主要部分呀!!只是请求来的时候,要先通过试图分发器,也就是DispatcherServlet,它指导请求的处理路径。 主要的过程: 1.客户端发送请求到DispacherServlet分发器 2.由分发器进行查到对应的contriller,找到处理请求的controller 3.控制器调用业务逻辑处理后,返回ModeAndView 4.DispacherServlet查询试图解析器,找到modelandview的指定视图并返回个用户 ssm框架的配置文件 实战最开始,就是要配置各种配置文件。主要有springmvc、spring、mybatis的配置 1.springmvc负责请求的转发和视图管理 2.spring实现业务的对象管理 3,mybatis作为数据对象的持久化引擎
  • Project03_基于Redis+SSM+Vue的注册登录需求实现(邮箱+短信)
    一、项目环境 前端页面:VueProject SDK:JDK1.8IDEA 2019SQLyogVMWare Workstation ProMobaXtermRedisDesktopManager 二、项目演示 项目源码:salieri_login02项目参考:狂神说_阿里云短信业务实战;乐字节_SpringBoot注册登录;不良人_前后端分离的员工管理系统;不良人_Vue全家桶;尚硅谷_Redis6教程项目运行注意事项:同Project01项目运行过程: 图1 项目运行过程 三、主要模块说明 邮箱注册模块的说明: 在Project02的基础上做了如下改动: 1.1 通过Redis设置激活有效期,若超过指定时间则激活链接失效。 手机短信注册模块的说明: 在Project02的基础上做了如下改动: 1.1 通过Redis设置验证码有效期,若超过指定时间则无法进行注册和激活。 1.2 通过Redis设置给定手机号的短信发送次数限制,若超过指定次数则在给定时间内无法再向指定手机发送验证码。 用户存储模块的说明: 1.1 整合Redis,利用Redis缓存机制的优势,当相同用户再次登录时在缓存中查询相对在MySQL中查询速度更快。 四、Redis设置 Step1: Redis安装 在VMWare创建Centos7虚拟机,通过MobaXterm远程连接,拖拽redis-6.2.1.tar
  • nodejs实现短信业务
    nodejs实现短信业务 1、一定要备案域名,不然短信业务无法使用。 2、申请到下述二个模块 3、选择原版SDK中node 4、申请AccessKey,申请一个管理密钥 5、搭建node环境并且安装pop-core npm install @alicloud/pop-core -S 6、实现短信登录(我使用koa框架,但是逻辑相同的) const Core = require("@alicloud/pop-core"); const jwt = require("jsonwebtoken"); const { PRIVATE_KEY } = require("../app/config"); const SmsService = require("../service/sms.service"); const md5password = require("../utils/password-handle"); //存储手机号和获取的验证码 var loginInfo = []; class smsController { async sendLoginCroeCode(ctx, next) { //获取手机号 const { iphone } = ctx.request.body; //#随机6位验证码 var code = ""; //防止出0开头,阿里短信不允许0开头
  • 171. Python语言 的 Flask框架项目 之 验证码(短信验证码) 第五章:pipeline 操作 Redis 数据库
    pipeline 操作 Redis 数据库 本章主题关键词Redis的 C - S 架构存在的问题:解决的办法: pipeline 的介绍管道 pipeline实现的原理 pipeline操作Redis数据库总结小便条 本章主题    关键词    Redis的 C - S 架构 基于 客户端-服务端 模型以及请求/响应协议的 TCP 服务。客户端向服务端发送一个查询请求,并监听 Socket 返回。通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。 存在的问题: 如果 Redis 服务端 需要同时处理多个请求,加上网络延迟,那么服务端利用率不高,效率降低。 解决的办法: 管道 pipeline    pipeline 的介绍 管道 pipeline 可以一次性发送多条命令并在执行完后一次性将结果返回。pipeline 通过减少客户端与 Redis 的通信次数来实现降低往返延时时间。    实现的原理 实现的原理是队列。Client 可以将三个命令放到一个 tcp 报文一起发送。Server 则可以将三条命令的处理结果放到一个 tcp 报文返回。队列是先进先出,这样就保证数据的顺序性。 pipeline操作Redis数据库 实现步骤 创建 Redis 管道将 Redis 请求添加到队列执行请求 代码实现 # 创建Redis管道 pl = redis_conn
  • 如何在swift 2中通过短信发送验证码(how to send verification code by sms in swift 2)
    问题 我为我的应用程序构建了一个注册表单,我需要通过短信向用户发送验证码以完成注册过程。 我尝试使用 MFMessageComposeViewController 但它在设备上打开对话框短信,以便用户可以看到代码。 我还检查了网络上的 3party 发送短信,但国家代码有问题。 我知道它的可能性,因为whatsapp 这样做是为了确认用户。 它的正确方法是什么? 这是我尝试过的主题:Sending SMS in iOS with Swift 回答1 实现这一点的最佳方法是创建一些视图,以允许用户输入带有国家代码的电话号码,服务器可以使用该代码发送启动 OTP 验证的请求。 为此,您需要: 创建视图控制器。 将电话号码和国家代码上传到服务器。 通过验证 OTP 来验证请求。 正如 Dan 所提到的,您可以为此目的使用 Fabric 中的 Digits,并为出色的 UX 创建自定义视图。 另一方面,您也可以使用来自 MSG91 的名为 SendOTP 的服务 - 您可以将其用于内部测试和开发想法,因为它们为您提供 5,000 条免费 OTP 短信。 该服务有一套完整的 API,您可以在后端以及应用程序前端实现这些 API。 此外,它们提供了一个框架,因此您无需创建视图,而只需使用presentViewController并调用delegate方法即可了解验证过程中发生的情况 -
  • 登录鉴权
    1.用户注册 前台需要给我们传递用户名、密码、手机号、手机验证码。验证用户前台传过来的数据是否符合规范,我们使用的Hibernate Validator框架实现的服务端表单校验。短信验证码这块,我们采用的阿里的大于短信接口来做的,我们单独搭建了一个短信微服务,发送的短信请求通过MQ消息由短信微服务消费,进行短信发送。密码我们使用的是Spring提供的BCryptPasswordEncoder加密算法,分成加密和验证两个过程: 加密:算法会对明文密码使用UUID随机生成一个salt,使用salt结合密码来加密,得到最终的密文。 验证密码:需要先拿到加密后的密码和要验证的密码,根据已加密的密码来推测出salt,然后利用相同的算法和salt对要验证码的密码加密,与已加密的密码对比即可。 短信验证码的有效期为30分钟,为了验证短信验证码的时效性,我们保存到了redis中,手机号作为key,验证码作为value,设置有效期为30分钟。另外为了防止恶意攻击,我们限制一个手机号1分钟之内只能发送一次验证码,这个也是通过redis来实现的,手机号拼接"_yes"为key,验证码为value,设置有效期为1分钟。为了防止机器恶意调用验证码接口,我们这个地方使用图形验证码来进行限制。 2.用户登录 使用JWT+RSA加密技术实现了无状态登录。我们单独搭建了一个校验微服务来进行校验
  • thinkphp6 调用阿里云短信服务发送验证码功能实现
    最近做的项目需要用手机号注册账号,之前没有对接过发送短信,今天研究了一下, 写下一贴以做记录。 项目框架用thinkphp6,短信选择阿里云的短信服务。阿里云提供了两种方式安装sdk,这里选择用composer 官方文档: SDK及DEMO下载 PHP-SDK快速开始 OpenAPI Explorer composer直接安装 1.使用composer安装sdk2. 新建send_sms方法3. 定义配置信息4. 控制器中调用方法 1.使用composer安装sdk 我的开发环境是windows系统,已经安装过composer,本篇不再讨论如何安装。 composer require alibabacloud/sdk 等待安装好就行了: 2. 新建send_sms方法 common.php里新建send_cms: /** * 发送短信 * @param $AccessKeyId * @param $Secret * @param $params * @return bool * @throws ClientException */ function send_sms ($AccessKeyId, $Secret, $params) { if (empty($params['phone'])) { return false; } // 创建客户端 AlibabaCloud
  • 使用SSM框架实现登录页面的验证码功能
    实现思路:后台生成一个随机数保存到session中并显示到页面,用户输入的验证码与session中保存的随机数进行忽略大小写的比较,如果相同就验证成功,否则验证失败。 1、前端页面展示代码 <div class="form-group"> <div class="input-icon"> <i class="fa fa-picture-o"></i> <input class="form-control" style="width:180px;" type="text" id="verifyCode" name="verifyCode" placeholder="验证码" maxlength="4"> <img style="position: absolute;right: 0;top: 0;" src="${pageContext.request.contextPath }/user/getVerifyCode" width="110" height="34" id="verifyCodeImage" onclick="javascript:changeImage();"> </div> </div> js代码 function changeImage() { $('#verifyCodeImage').attr('src', '${pageContext.request
  • java计算器程序代码实现加减乘除_八个常见Java项目,献给初学编程的你!
    如果你是正在学习Java的初学者,或者打算转行学习Java编程的小白,那么你一定会对Java能够做什么项目一定很感兴趣。一定希望对Java能够实现哪些东西有所了解。 今天就为大家简单说一下一些可以用Java编程语言练手的项目。 0.计算器 可以用Java语言做一个手机上简单的计算器,可以做到加减乘除。而且这个功能很简单,几乎是很多学习Java编程的语言经常会去尝试的第一个小项目。虽然简单,可是能够做到也是会很有成就感的。 1.日记软件 可以用Java制作一个日记软件,可以实现用户的注册、登录以及对日记的各种操作。你可以用这个来实现对自己生活的记录,是一个真正的“日记本”。 2. Java实现在线协作文档编辑 多人在线协作文档编辑器是一个很常用的功能,适合小组内的文档编辑;使用java编写代码,应用非常流行的spring mvc框架,引入ckeditor插件,并加入localStorage缓存技术,最终利用Eclipse完成。非常适合Java学习者用于练手。 3.自己的Java编辑器 使用 Eclipse 开发,配合 Java 语言完成一个 Java 编辑器。它的主要功能:1、Java代码的编辑 2、编译及运行Java程序。 4.数独计算器 使用Java实现数独游戏的核心算法,在感受数独的魅力中通过Java编写桌面程序完成数独计算器,完成对Java基础知识点的学习和巩固。 5
  • 认证篇:Spring Security 自定义验证码登录(上)之验证码生成
    概述 总所周知,验证码方式的登录模式十分的普遍,不过 Spring Security并没有提供比较好的原生解决方案,但是我们可以 do it by ourselves!,本文的篇幅相对比较长,因此分上下篇分别来介绍。上篇主要介绍:验证码的生成,下篇对自定义验证码登录的流程进行讲解。 我们比较常见的验证码主要有两种:图形验证码以及短信验证码,相对来说不是特别的复杂。可能会有人有疑惑:为什么简单的验证码生成需要花费一整篇幅来介绍呢?原因当然是:身为菜鸟的我也有一个架构师的梦!验证码的生成会结合模板方法模式一起讲解。 初探模板方法模式 模板方法模式属于一种行为型的设计模式,主要是用来解决复用和扩展两个问题。 模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到某些子类中实现。该模式可以让子类在不改变算法整体结构的情况,重新定义算法中的某些步骤细节。 这里提到了一个算法骨架的概念,算法并非是指数据结构中的“算法”,可以理解为广义上的业务逻辑; 骨架架子其实就是模板;总的来说:算法骨架可以理解为包含广义业务逻辑的模板方法。 实践出真知 绝大部分的设计模式的原理都十分的简单,难得是将原理落实到实践中,解决实际问题。 我们知道模板方法模式主要是用来解决 复用和 扩展这两个问题,结合到实际情况中来分析;验证码生成有哪些地方需要 复用和 扩展呢? 让我们来梳理一下验证码登录模式的流程
  • 健康医疗项目
    健康医疗项目 一、技术架构 二、功能架构 三、技术特色 1.maven分模块开发 2.mybatis代码生成插件 mybatis-generator是一款在使用mybatis框架时,自动生成model、dao和mapper的工具,很大程度上减少了业务开发人员的手动编码时间。 3.七牛云存储 使用七牛云存储图片 4.Quartz 利用该工具清理垃圾图片,即上传预览的图片会上传到七牛云服务器,但是如果不新增套餐信息则是垃圾图片。 5.阿里云短信服务 6.页面静态化 页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页,这样用户在访问网页时,服务器直接给用户响应静态html页面,没有了动态查询数据库的过程。 FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成 XML,JSP 或 Java 等。 7.Spring Security Spring Security是 Spring提供的安全认证服务的框架。 使用Spring Security可以帮助我们来简化认证和授权的过程。 8.ECharts
  • 软件测试面试技巧之描述自动化测试如何实现的?
    软件测试工程师面试的时候,但凡简历中有透露一点点自己会自动化测试的技能点的描述,都会被面试官问,那你结合你的测试项目说说自动化测试是怎么实现的?一到这里,很多网友,包括我的学生,也都一脸懵逼的样子。 有心放弃吧,但是看着那么高的薪资,还是很眼热的!但是说吧,可感觉自己说的是不是太简单了,能成么?其实,大家远远不需要这么担心,因为自动化测试没有大家想的那么神秘,那么可怕,说出了本质,那就是都一样的! 自动化测试的本质:是把以人为驱动的测试行为转化为机器执行的一种过程。一般,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。自动化测试的目的是,为了节省人力、时间或硬件资源,提高测试效率。——这是百度百科中的介绍。 从上面一段文字描述中,我们能够知道自动化测试跟手工测试有着密切的关系,并且是先有手工测试,设计测试用例,再将测试过程转换为脚本语言,让计算机运行的过程。 所以,大家在在进行自动化测试的过程实现的时候,一定要根据手工测试中使用的测试用例进行设计脚本,因为自动化测试要模拟人的实际操作。下面我们以实际案例说一下自动化测试的实现过程和手工测试的关系。 案例:在QQ注册页面,对QQ的注册进行功能测试。 页面地址:https://ssl.zc.qq.com/v3/index-chs.html 确认页面中各个表单元素的需求: 1
  • SpringSecurity & OAuth2实现短信验证码方式获取AccessToken
    Spring提供的原生的OAuth2依赖内置了几种比较常用的授权方式:password、authorization-code、client_credentials、refresh_token、implicit等,虽然可以满足我们日常的需求,不过针对一些特殊的需求还是捉襟见肘,有点无奈,比如:微信登录、短信登录...,针对这一点ApiBoot通过修改Spring OAuth2依赖的源码,可以根据业务进行自定义添加grantType。 ApiBoot官方文档:http://apiboot.minbox.io 创建项目 我们先来使用IDEA创建本章的项目,pom.xml添加的依赖如下所示: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.minbox.framework</groupId> <artifactId>api-boot-starter-security-oauth-jwt</artifactId> </dependency> <dependency> <groupId>mysql</groupId>
  • 一个登录框可以测试哪些漏洞
    一个文本框可能存在哪些漏洞 前言用户名枚举弱口令空口令登录认证绕过存在暴力破解图形验证码不失效短信验证码绕过短信验证码可暴力破解短信炸弹恶意锁定问题密码明文传输反射型跨站脚本攻击万能密码sql注入任意用户密码修改/重置目录遍历敏感文件信息泄漏框架漏洞SSO认证缺陷 前言 搞安全的小伙纸面试的时候,面试官总是喜欢问一个问题,只有一个登录框你都能测试哪些漏洞? 通常大家测试的都是测试关键,为了有更好的测试效果,会提供给你用户名密码;但是一些比较重要的企业,而这个环境却是正式环境,里面存放着一些数据不希望被你看到的时候,是不会提供给给你登录账号的。 这个时候,考验你基础知识是否扎实的时刻来临了。 用户名枚举 漏洞描述:存在于系统登录页面,利用登陆时输入系统存在的用户名错误密码和不存在的用户名错误密码,返回不同的出错信息可枚举出系统中存在的账号信息。 测试方法: 找到网站或者web系统登录页面。 在web系统登录页面,通过手工方式,利用系统中存在的用户名和不存在的用户名,密码随意,尝试登录,查看其回显内容。例如:输入存在的用户名admin,回显如下:密码错误;输入不存在的用户名test,回显如下:用户不存在。 示例: 风险分析:攻击者根据Web应用程序返回的上述提示信息即可枚举系统中存在的登录用户名,然后针对枚举出来的登录用户名,对其密码进行暴力破解。 修复方案