热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

阿里云短信服务的使用(创建,测试笔记)

目录注册账号选择短信服务-国内消息创建短信模板 创建AccessKey 添加

目录

注册账号

选择短信服务-国内消息

创建短信模板

 创建AccessKey

 添加AccessKey的使用权限

设置启用和禁用AccessKey​编辑

 代码开发


注册账号

阿里云官网: https://www.aliyun.com/

点击官网首页注册按钮。

阿里云短信服务-设置短信签名

选择短信服务-国内消息

注册成功后,点击登录按钮进行登录。登录后进入短信服务管理页面,选择国内消息菜单:

创建短信模板

短信模板包含短信发送内容、场景、变量信息。

 创建AccessKey

点击右上角,在弹出的窗口中点击【AccessKey管理】∶

 添加AccessKey的使用权限

设置启用和禁用AccessKey

 代码开发

1、导入maven坐标



com.aliyun
aliyun-java-sdk-core
4.5.16


com.aliyun
aliyun-java-sdk-dysmsapi
2.1.0

2、调用API(此处将api封装成utils)

public class SMSUtils {
/**
* 发送短信
* @param signName 签名
* @param templateCode 模板
* @param phoneNumbers 手机号
* @param param 参数
*/
public static void sendMessage(String signName, String templateCode,String phoneNumbers,String param){
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI5tJPSzEXKgNYxUor1yjD", "MqeAq4ZW3p1xPN0FPhjgrT5GXCKEuq");
IAcsClient client = new DefaultAcsClient(profile);
SendSmsRequest request = new SendSmsRequest();
request.setSysRegionId("cn-hangzhou");
request.setPhoneNumbers(phoneNumbers); //手机号
request.setSignName(signName); //签名
request.setTemplateCode(templateCode); //模板code
request.setTemplateParam("{\"code\":\""+param+"\"}");
try {
SendSmsResponse respOnse= client.getAcsResponse(request);
System.out.println("短信发送成功");
}catch (ClientException e) {
e.printStackTrace();
}
}

3、导入接受短信验证码的相关配置类

  • 实体类User(直接从课程资料中导入即可)
  • Mapper接口UserMapper
  • 业务层接口UserService
  • 业务层实现类UserServicelmpl
  • 控制层UserController
  • 工具类SMSutils、 ValidateCodeutils(直接从课程资料中导入即可)

-------需要访问手机端页面,不可被拦截,在LogincheckFilter过滤器中放行

String[] urls = new String[]{
"/employee/login",
"/employee/logout",
"/backend/**",
"/front/**",
"/common/**",
"/user/login",
"/user/sendMsg"
};

//4.1、判断登录状态,如果已登录,则直接放行
if (request.getSession().getAttribute("employee")!=null){
log.info("用户已登录,id为{}",request.getSession().getAttribute("employee"));
//获取当前用户的id,set到线程中,以便controller方法和Handler中使用
Long empId = (Long) request.getSession().getAttribute("employee");
BaseContextUtil.setNowId(empId);
filterChain.doFilter(request,response);
return;
}
// 4-2、判断登录状态,如果已登录,则直接放行
if (request.getSession().getAttribute("user") != null) {
log.info("用户已登录,用户id为:{}", request.getSession().getAttribute("user"));
Long userId= (Long) request.getSession().getAttribute("user");
BaseContextUtil.setNowId(userId);
filterChain.doFilter(request, response);
return;
}

-----UserController处理post请求(发送验证码的请求和登录请求)

此处模拟了验证码的发送,真实发送需要AccessKey,详情见IDEA中的配置

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/sendMsg")
public R sendMsg(@RequestBody User user, HttpSession httpSession ){
//获取手机号
String phOne= user.getPhone();
if(StringUtils.isNotEmpty(phone)){
//生成随机的4位验证码
String code = ValidateCodeUtils.generateValidateCode(4).toString();
log.info("code={}",code);
//调用阿里云提供的短信服务API完成发送短信
//SMSUtils.sendMessage("瑞吉外卖","",phone,code);
//需要将生成的验证码保存到Session
httpSession.setAttribute(phone,code);
return R.success("手机验证码短信发送成功");
}
return R.error("短信发送失败");
}
@PostMapping("/login")
public R login(@RequestBody Map map,HttpSession httpSession) {
log.info(map.toString());
//获取客户端传来的phone和code
String phOne= map.get("phone").toString();
String code = map.get("code").toString();
//与之前在session保存的对比-----k-v形式
Object code1 = httpSession.getAttribute(phone);
if (code1 != null && code1.equals(code)) {
//查询user表数据,判断当前手机号是否为新用户,如果是新用户则自动完成注册
LambdaQueryWrapper qw = new LambdaQueryWrapper<>();
qw.eq(User::getPhone, phone);
User user = userService.getOne(qw);
if (user == null) {
//新用户自动创建
user = new User();
user.setPhone(phone);
user.setStatus(1);
userService.save(user);
}
//用户不为空,登录
httpSession.setAttribute("user", user.getId());
return R.success(user);
}
return R.error("登录失败");
}
}

 


版权声明:本文为qq_48021871原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_48021871/article/details/125896206
推荐阅读
author-avatar
mobiledu2502931473
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有