短信服务
我们需要在阿里云官网进行注册登录
阿里云短信服务(Short)是广大企业客户快速触达手机用户所优选使用的通信能力 。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,广受出海企业选用 。
注册成功后,点击登录按钮进行登录 。登录后进入短信服务管理页面,选择国内消息菜单:
切换到【模板管理】标签页:
光标移动到用户头像上,在弹出的窗口中点击【 管理】:
代码开发
文章插图
使用阿里云短信服务发送短信,可以参照官方提供的文档即可 。
具体开发步骤:
1、导入maven坐标
2、调用API
com.aliyun aliyun-java-sdk-core 4.5.16 com.aliyun aliyun-java-sdk-dysmsapi 2.1.0
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "", "");IAcsClient client = new DefaultAcsClient(profile);SendSmsRequest request = new SendSmsRequest();request.setSysRegionId("cn-hangzhou");request.setPhoneNumbers(phoneNumbers);request.setSignName(signName);request.setTemplateCode(templateCode);request.setTemplateParam("{\"code\":\""+param+"\"}");try {SendSmsResponse response = client.getAcsResponse(request);System.out.println("短信发送成功");}catch (ClientException e) {e.printStackTrace();}
手机验证码登录
通过手机验证码登录时,涉及的表为user表,即用户表 。结构如下:
在开发代码之前,需要梳理一下登录时前端页面和服务端的交互过程:
1、在登录页面(front/page/login.html)输入手机号,点击【获取验证码】按钮,页面发送ajax请求,在服务端调用短信服务API给指定手机号发送验证码短信
2、在登录页面输入验证码,点击【登录】按钮,发送ajax请求,在服务端处理登录请求
开发手机验证码登录功能,其实就是在服务端编写代码去处理前端页面发送的这2次请求即可 。
前面我们已经完成了过滤器的开发,此过滤器用于检查用户的登录状态 。我们在进行手机验证码登录时,发送的请求需要在此过滤器处理时直接放行 。
//定义一些哪些请求路径不需要处理String[] urls= new String[]{"/employee/login","/employee/logout","/backend/**","/front/**","/common/**","/user/sendMsg","/user/login"};
在过滤器中扩展逻辑,判断移动端用户登录状态:
//4-2、判断登录状态,如果已登录,则直接放行if(request.getSession().getAttribute("user") != null){log.info("用户已登录,用户id为{}",request.getSession().getAttribute("user"));Long userId = (Long) request.getSession().getAttribute("user");//将获取到的用户id放入BaseContext.setCurrentId(userId);//放行filterChain.doFilter(request,servletResponse);return;}
在中创建方法,处理登录页面的请求,为指定手机号发送短信验证码,同时需要将验证码保存到,方便后续登录时进行比对 。
/*** 发送手机短信验证码* @param user* @return*/@PostMapping("/sendMsg")public R sendMessage(@RequestBody User user, HttpSession session){//获取手机号String phone = user.getPhone();if(StringUtils.isNotEmpty(phone)){//生成随机四位验证码String code = ValidateCodeUtils.generateValidateCode(4).toString();log.info("code:{}",code);//调用阿里云短信服务API完成发送短信SMSUtils.sendMessage("瑞吉外卖","",phone,code);//需要将生成的验证码保存到Sessionsession.setAttribute(phone,code);return R.success("短信发送成功");}return R.error("短信发送失败");}
- 03 在阿里:到杭州的第一天(租房)
- 手撸一个torch——day1——numba和flake8
- 日月潭和阿里山是属于什么地方的景观 日月潭阿里山攻略
- 阿里嘎多什么意思日语 阿里嘎多什么意思
- 为什么说payday2是硬盘杀手
- payday2怎么设置中文xbox payday2怎么设置中文
- 阿里斯顿热水器维修 阿里斯顿热水器
- 阿里巴巴原始股多少钱一股 阿里巴巴上市时间
- 阿里山日月潭多少钱一罐 台湾阿里山日月潭
- 天达公爵手表