用户根据短信验证码注册

用户注册
需求分析
注册账号,用手机号注册,填写后发送短信验证码,填写短信验证码正确方可注册成功。
实现思路
(1)发送短信验证码逻辑:用户服务将要发送的短信验证码发送给rabbitmq和redis ,
短信服务将消息从rabbitmq中取出并调用阿里云通信发送短信。阿里云通信整合了三大
运营商的短信网关,最终把验证码发送到用户的手机上。rabbitmq采用直接模式,用户
服务为消息生产者,短信服务为消息消费者。

(2)注册逻辑:注册时从redis中提取短信验证码与用户填写的验证码进行比对,如果一
致则可以注册,否则拦截请求。

后端代码
发送短信验证码到MQ
实现思路: 在用户服务编写API ,生成手机验证码,存入Redis并发送到RabbitMQ
1.添加配置文件applicationContext-rabbitmq-producer.xml
<beans …/>
<!‐‐连接工厂‐‐>
<rabbit:connection‐factory id=“connectionFactory” host=“127.0.0.1” port=“5672” username=“guest” password=“guest” />
<rabbit:admin connection‐factory=“connectionFactory”></rabbit:admin>
<!‐‐创建队列‐‐>
<rabbit:queue name=“queue.sms” />
<rabbit:template id=“rabbitTemplate” connection‐factory=“connectionFactory” />

2.在UserService中新增方法定义
/**

  • 发送短信验证码
  • @param mobile
    */
    public void sendSms(String phone);

3.UserServiceImpl方法实现
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private RabbitTemplate rabbitTemplate;
/**

  • 发送短信验证码
  • @param phone
    */
    public void sendSms(String phone){
    //1.得到六位短信验证码
    int max=999999;
    int min=100000;
    Random random = new Random();
    int code = random.nextInt(max);
    if(code<min){
    code=code+min;
    }
    System.out.println(“短信验证码:”+code);
    //2.保存到redis里
    redisTemplate.boundValueOps(“code_”+phone).set(code+"");
    redisTemplate.boundValueOps(“code_”+phone).expire(5,TimeUnit.MINUTES);//5分钟失效
    //3.发送给RabbitMQ
    Map<String,String> map=new HashMap();
    map.put(“phone”, phone);
    map.put(“code”, code+"");
    //因为不能发送Map形式的数据,需要转为字符串
    rabbitTemplate.convertAndSend("",“queue.sms”,JSON.toJSONString(map)); //直接模式,使用默认的交换器 RouteKey就是队列的名称
    }

4.新增UserController
@RestController
@RequestMapping("/user")
public class UserController {
@Reference
private UserService userService;
/**

  • 发送短信验证码
  • @param phone
    */
    @GetMapping(value="/sendSms")
    public Result sendSms(String phone){
    userService.sendSms(phone);
    return new Result();
    }
    }

短信服务接收消息
短信发送是由单独的短信服务提供的功能,所有的短信都是先发送到消息队列,短信服务从消息队列中提取手机号和验证码,调用短信发送接口进行发送短信。
添加监听实现类SmsMessageConsumer
public class SmsMessageConsumer implements MessageListener {
public void onMessage(Message message) {
String jsonString = new String(message.getBody());
Map<String,String> map = JSON.parseObject(jsonString, Map.class);
String phone = map.get(“phone”);
String code=map.get(“code”);
System.out.println(“手机号:”+phone+“验证码:”+code);
}
}

添加配置文件applicationContext-rabbitmq-consumer.xml
<!‐‐连接工厂‐‐>
<rabbit:connection‐factory id=“connectionFactory” host=“127.0.0.1”
port=“5672” username=“guest” password=“guest” />
<!‐‐创建队列‐‐>
<rabbit:queue name=“queue.sms” />
<!‐‐消费者监听类‐‐>

<!‐‐设置监听容器‐‐>
<rabbit:listener‐container connection‐factory=“connectionFactory” >
<rabbit:listener queue‐names=“queue.sms” ref=“messageConsumer”/>
</rabbit:listener‐container>

用户注册 (用户收到验证码后,输入验证码点击注册)
(1)UserService增加方法定义
/**

  • 增加
  • @param user
  • @param smsCode
    */
    public void add(User user,String smsCode); //参数为用户信息和短信验证码

(2)UserServiceImpl实现方法
/**

  • 增加
  • @param user
  • @param smsCode
    */
    public void add(User user,String smsCode) {
    //比较短信验证码
    //从Redis中获取系统短信验证码(系统生成的)
    String sysCode= (String) redisTemplate.boundValueOps(“code_”+user.getPhone()).get();
    if(sysCode==null){
    throw new RuntimeException(“验证码未发送或已过期”);
    }
    if(!smsCode.equals(sysCode)){
    throw new RuntimeException(“验证码不正确”);
    }
    if(user.getUsername()==null){
    user.setUsername(user.getPhone());
    }
    User searchUser=new User();
    searchUser.setUsername(user.getUsername());
    //应该可以直接根据手机号去搜索数据库中的手机号字段看是否存在该手机号,因为用户可能会在系统中修改用户名,根据用户名去判断就没意义了,除非设置用户名不能修改
    if(userMapper.selectCount(searchUser)>0) { //查询是否存在相同记录 selectCount是根据条件查询满足条件的记录数
    throw new RuntimeException(“该手机号已注册”);
    }
    user.setCreated(new Date());
    user.setUpdated(new Date());
    user.setPoints(0);//积分初始值为0
    user.setStatus(“1”);//状态1
    user.setIsEmailCheck(“0”);//邮箱认证,还未认证
    user.setIsMobileCheck(“1”);//手机认证,已认证
    userMapper.insert(user); //将用户信息存入数据库
    }

(3)UserController增加方法
@PostMapping("/save")
public Result save(@RequestBody User user , String smsCode ){
//密码加密
BCryptPasswordEncoder encoder=new BCryptPasswordEncoder();
String newpassword = encoder.encode(user.getPassword());
user.setPassword(newpassword);
userService.add(user,smsCode);
return new Result();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8890.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

博士申请 | 香港大学余涛老师课题组招收NLP方向博士生/RA/软件工程师

合适的工作难找&#xff1f;最新的招聘信息也不知道&#xff1f; AI 求职为大家精选人工智能领域最新鲜的招聘信息&#xff0c;助你先人一步投递&#xff0c;快人一步入职&#xff01; 香港大学 香港大学 (The University of Hong Kong)&#xff0c;简称港大 (HKU), 是一所世界…

Wolfram:AI 会抢走所有工作并终结人类历史吗?

导语 ChatGPT 的问世让人惊叹其接近人类的智能水平&#xff0c;也让很多人担忧&#xff1a;AI 会抢走人类的工作吗&#xff1f;近日&#xff0c;著名计算机科学家 Stephen Wolfram 发表博客文章认为&#xff0c;计算不可约性意味着&#xff0c;即使知道给AI制定什么基本法则&a…

上海亚商投顾:A股三大指数震荡涨跌各异 大消费全天活跃

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 沪指今日窄幅震荡&#xff0c;创业板指小幅冲高后回落&#xff0c;科创50指数盘中涨近1.5%&#xff0c;随后涨幅明…

2022 程序员“求生”现状:躲过“裁员潮 ”,也避不开 AIGC 和虚拟人?

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 眼看着&#xff0c;不平凡的 2022 年已进入最后倒计时。在这种辞旧迎新的时刻&#xff0c;除了积极展望未来&#xff0c;我们也习惯在此时回顾这一年来的点点滴滴。 这一年&#xff0c;俄乌冲突令人再…

原美团创始人王慧文进军人工智能;极氪完成7.5亿美元A轮融资;Meta正在准备新一轮裁员丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 投融资 极氪完成7.5亿美元A轮融资&#xff0c;宁德时代、越秀产业基金等参投 2月13日&#xff0c;吉利旗下高端智能电动品牌极氪宣布完成7.5亿美元A轮融资&#xff0c;投后估值130亿美元。 吉利汽车公告显示&#xff0c;…

九龙证券|AIGC彻底火了,概念股全线上涨,走势领先者三连板!

一夜之间&#xff0c;AIGC走红A股&#xff0c;谁会成为商场宠儿&#xff1f; A股历来盛行炒作新体裁&#xff0c;尤其是新体裁诞生的初期&#xff0c;资金参与热心高涨&#xff0c;诞生牛股概率更高。诞生不足两月的ChatGPT便是今年以来最抢手体裁之一&#xff0c;由ChatGPT带动…

上海亚商投顾:三大指数均涨约1% 两市近4300股飘红

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 三大指数早盘冲高回落&#xff0c;午后又震荡走强&#xff0c;深成指、创业板指均涨超1.2%。人工智能概念掀涨停潮…

网易在文本及多模态预训练技术的研究与应用

在 CSDN 与《新程序员》合作举办的「新程序员大会&#xff08;NPCon&#xff09;——AIGC 与大模型技术应用论坛」上&#xff0c;来自网易伏羲实验室资深研究院 NLP 研究组及多模态算法负责人带来了《文本及多模态预训练技术的研究与应用》的精彩分享。 张荣升介绍了网易伏羲实…

【雕爷学编程】Arduino动手做(141)---AS608光学指纹识别模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

微软旗下GitHub宣布裁员10%;谷歌高管警告:AI聊天机器人会产生错觉;华为称在ChatGPT领域早有布局丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 投融资 迈铸半导体完成1500万Pre-A轮融资 近日&#xff0c;原创技术晶圆级微机电铸造技术及应用方案提供商上海迈铸半导体科技有限公司&#xff08;下简称“迈铸半导体”&#xff09;于2月10日宣布完成1500万Pre-A轮融资…

2023世界人工智能大会这些消息不容错过;大模型生态合作共同体正式发起;微软从ChatGPT中赚900亿美元丨每日大事件...

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 企业动态 阿里云通义大模型新成员——通义万相正式上线 在2023年世界人工智能大会上&#xff0c;阿里云正式推出AI绘画新品“通义万相”。通义万相基于阿里云“通义”大模型能力打造&#xff0c;用户可以在通义万相中输入…

ChatGPT的狂欢背后:短板犹在,启发甚多,2023有这些事可以做……

ChatGPT 的强大能力是与生俱来的吗&#xff1f;它有哪些短板&#xff1f;未来它会取代搜索引擎吗&#xff1f;它的出现给我们的 AI 研究带来了哪些启发&#xff1f;针对这些问题&#xff0c;几位 AI 研究者展开了深入对谈。 2022 年的最后一个月&#xff0c;OpenAI 用一个爆款对…

ChatGPT 的狂欢背后:短板犹在,启发甚多,2023 有这些事可以做……

这是「进击的Coder」的第 781 篇技术分享 编辑&#xff1a;张倩 来源&#xff1a;机器之心报道 “ 阅读本文大概需要 13 分钟。 ” ChatGPT 的强大能力是与生俱来的吗&#xff1f;它有哪些短板&#xff1f;未来它会取代搜索引擎吗&#xff1f;它的出现给我们的 AI 研究带来了哪…

插值字符串格式化定制程序结果输出(f‘{object}‘)

【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… 地址&#xff1a;https://lqpybook.readthedocs.io/ 自学并不是什么神秘的东西&#xff0…

让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的

最近一直有一个问题&#xff0c;如鲠在喉。争取早一天解决&#xff0c;早一天踏踏实实的睡觉。 问题是&#xff1a;在ES中&#xff0c;一条JSON数据是如何写入到磁盘上的&#xff1f; 如何解决这个问题&#xff1f;我想到了chatGPT&#xff0c;还有lucene的学习资料。这篇文章&…

python-chatgpt自动化批量改写文章-基于gpt-3-5-turbo模型

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 一、ChatGPT官方文档介绍&#xff1a; ChatGPT API—0.002美元&#xff0c;1000个token。比之前的GPT-3.0&#xff0c;成本直接降低了9…

或许你不信,但是强于ChatGPT的模型已经出来了。。。

每天给你送来NLP技术干货&#xff01; 来自&#xff1a;量子位 点击这里进群—>加入NLP交流群 因不满老东家成为微软附庸&#xff0c;11名OpenAI前员工怒而出走。 如今带着“ChatGPT最强竞品”杀回战场&#xff0c;新公司估值50亿美元&#xff0c;一出手就获得3亿美元融资。…

OpenAI网站3月份独立访问量突破8.47亿,增长54%;10分钟搭建自己可免费商用的ChatGPT环境

&#x1f989; AI新闻 &#x1f680; OpenAI网站3月份独立访问量突破8.47亿&#xff0c;增长54% 摘要&#xff1a;据营销机构VezaDigital的调查数据显示&#xff0c;今年3月份共有8.47亿用户访问了OpenAI的网站&#xff0c;比2月份增长了54%。OpenAI是爆火聊天机器人ChatGPT的…

ChatGPT详解:发展历史、原理、技术架构及产业未来探讨

去年12月1日&#xff0c;OpenAI推出人工智能聊天原型ChatGPT&#xff0c;再次赚足眼球&#xff0c;为AI界引发了类似AIGC让艺术家失业的大讨论。据报道&#xff0c;ChatGPT在开放试用的短短几天&#xff0c;就吸引了超过 100 万互联网注册用户。并且社交网络流传出各种询问或调…

腾讯回应考生喊话马化腾;库克承认在使用 ChatGPT;OpenHarmony 4.0 Beta1 发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…