完善短信接口
短信发送的大体思路: 根据ip地址来控制短信的发送 每60S同一个ip只能发送一条短信 将ip拼接记录至redis中 发送短信时 判断ip是否存在 若存在 禁止发送短信
根据math.random
来生成短信验证码 将double转为int可舍去小数点后的数 将验证码存储至redis中 登录时根据手机号和验证码匹配登录成功
将短信前缀和操作redis的对象抽出 因为登录或其他controller可能会用到 提高了代码的复用性
public class BaseController {
@Autowired
protected RedisOperator redisOperator;
protected static final String MOBILE_SMS_CODE = "mobile_sms_code";
}
继承BaseController
@RestController
public class PassportController extends BaseController implements PassportControllerAPI {
@Override
public GraceJSONResult getSMSCode(@RequestParam String mobile, HttpServletRequest request) {
String userIp = IpUtil.getIp(request);
redisOperator.setnx60s(MOBILE_SMS_CODE + ":" + userIp, mobile);
String random = ((int)(Math.random() * 100000 * 8)) + "";
// todo 发送短信
redisOperator.set(MOBILE_SMS_CODE + ":" + mobile, random, 60 * 30);
return GraceJSONResult.ok();
}
}
public GraceJSONResult getSMSCode(@RequestParam String mobile, HttpServletRequest request) {
String userIp = IpUtil.getIp(request);
redisOperator.setnx60s(MOBILE_SMS_CODE + ":" + userIp, mobile);
String random = ((int)(Math.random() * 100000 * 8)) + "";
// todo 发送短信
redisOperator.set(MOBILE_SMS_CODE + ":" + mobile, random, 60 * 30);
return GraceJSONResult.ok();
}
虽然道路是曲折的,但前途是光明的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律