限制短信六十秒能只能发送一条
所谓限制短信发送频率 大体思路是 判断之前发送短信存储的ip在redis是否存在 若存在则拦截
实现 HandlerInterceptor
类
类中有三个方法分别是
- afterCompletion: controller执行之后 渲染视图之后
- postHandle: controller 执行之后 渲染视图之前
- preHandle: controller 执行之前
我们只要在controller执行之前 判断是否key是否存在 若存在返回false表示拦截 返回true表示通过
public class PassportInterceptor implements HandlerInterceptor {
@Autowired
protected RedisOperator redisOperator;
protected static final String MOBILE_SMS_CODE = "mobile_sms_code";
/**
* 进入controller之前拦截
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String userIp = IpUtil.getIp(request);
if (redisOperator.keyIsExist(MOBILE_SMS_CODE + ":" + userIp)) {
System.out.println("短信发送过于频繁");
return false;
} else {
return true;
}
}
}
之后写配置类 将拦截器注册并指明是那条路由匹配该拦截器
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Bean
public PassportInterceptor passportInterceptor() {
return new PassportInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(passportInterceptor())
.addPathPatterns("/passport/getSMSCode");
}
}
虽然道路是曲折的,但前途是光明的。
【推荐】国内首个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 绘制太阳,地球,月球 运作规律