基于阿里云实现手机号验证功能

news/2024/11/19 23:17:23/文章来源:https://www.cnblogs.com/mxfenfei/p/18197446

一、阿里云手机短信验证码服务

  1. 阿里云创建账号 https://home.console.aliyun.com/home/dashboard/ProductAndService

  2. 搜索短信服务

  3. 选择签名、资质管理、新增资质

  4. 创建签名

  1. 创建新模版,其中对映签名等信息

  1. 查看模版

  2. 获取ID 和 Key

    (1).选中头像,创建AccessKey

  3. 创建工具类

      /// <summary>/// 发送手机短信信息(通过阿里云SDK)/// </summary>/// <param name="aliAccessKey">授权id(阿里云账号的AccessKeyId)</param>/// <param name="aliAccessSecret">授权密钥(阿里云账号的AccessKeySecret)</param>/// <param name="phoneNumber">接收手机号(多个用逗号隔开)</param>/// <param name="signName">短信签名</param>/// <param name="tempCode">短信模板ID</param>/// <param name="tempParam">短信模板变量</param>/// <returns></returns>public static JObject SendMessageByAliSms(string aliAccessKey, string aliAccessSecret, string phoneNumber, string signName, string tempCode, string tempParam){//返回结果对象JObject result = new JObject();//接口文档(里面有sdk):https://help.aliyun.com/product/44282.html?spm=5176.12226155.0.0.33ac1cbeMfrIwkhttps://home.firefoxchina.cn           IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", aliAccessKey, aliAccessSecret);   //cn-hangzhou: 默认节点DefaultAcsClient client = new DefaultAcsClient(profile);CommonRequest request = new CommonRequest();request.Method = MethodType.POST;  //请求方式request.Domain = "dysmsapi.aliyuncs.com";  //请求域名request.Version = "2017-05-25";  //请求版本request.Action = "SendSms";  //请求操作request.AddQueryParameters("PhoneNumbers", phoneNumber);request.AddQueryParameters("SignName", signName);request.AddQueryParameters("TemplateCode", tempCode);request.AddQueryParameters("TemplateParam", tempParam);try{//发送请求请返回响应CommonResponse response = client.GetCommonResponse(request);//获取返回的内容string content = Encoding.Default.GetString(response.HttpResponse.Content);//序列化成对象(Code: 请求状态码,Message:状态码描述,BizId:发送回执ID, RequestId: 请求ID)result = (JObject)JsonConvert.DeserializeObject(content);}catch (ServerException e){result.Add("Code", "500");result.Add("Message", "短信服务异常:" + e.Message);}catch (ClientException e){result.Add("Code", "501");result.Add("Message", "客户端异常:" + e.Message);}return result;}#endregion}public static class AliInfor{#region 阿里云平台短信服务//获取配置文件的授权ID、授权密钥public static string aliAccessKeyId = "";//输入IDpublic static string aliAccessKeySecret = "";//输入秘钥/// <summary>/// 发送手机短信验证码(阿里云平台)/// </summary>/// <param name="mobile">接收手机</param>/// <param name="signName">短信签名</param>/// <param name="tempCode">短信模板ID</param>/// <param name="mobileCode">短信验证码</param>/// <returns></returns>public static bool SendMobileMessageByAli(string mobile, string signName, string tempCode, string mobileCode){//拼接读短信目标变量值  "{\"code\":\"1234\"}"string tempParam = "{'code" + "':" + mobileCode + "}";// $"code:{mobileCode}";//发送短信并返回结果JObject result = SendMessageByAliSms(aliAccessKeyId, aliAccessKeySecret, mobile, signName, tempCode, tempParam);//返回代码if (result["Code"].ToString().ToLower() == "ok"){return true;}else{return false;}}
  4. API调用

     /// <summary>/// 发送验证码/// </summary>/// <param name="uTel">手机号码</param>/// <param name="ges">验证码</param>public void GetTelLogin(string? uTel,string? ges){bool isSuccess = AliInfor.SendMobileMessageByAli(uTel, "系统名称", "SMS_465635094", ges);}
    

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

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

相关文章

第八章:路由基础

第八章:路由基础 路由: 在特定的拓扑上,选择从 source 节点到 destination 节点的路径。一个好的路由算法,即使面对 non-uniform traffic pattern,也能有效地均衡负载,使实际 throughput 更加接近于理想情况。 好的路由算法可以使路径长度尽可能短,从而减少跳数和传输的…

navicat怎么连接sqlserver

1.打开SQLServer配置管理器点击SQL Server 网络配置、把协议保持启用,如果默认已启用就不用管; 把IP地址里的IPAll里的TCP端口改为1433(SQL Server的端口是1433,Mysql的是3306); 检查SQL Native Client11.0的配置,确认协议也在开启,端口为1433; SQLServer的名称 这里的…

你知道 Java 有哪些引用吗?

判断对象是否要回收有引用计数法和可达性算法两种方式,无论哪种都离不开引用,本文将介绍Java的四种引用。前言判断对象是否要回收有引用计数法和可达性算法两种方式,无论哪种都离不开引用,本文将介绍Java的四种引用。一、概述二、详解 1. 强引用 概述 在Java程序中,强引用…

通过HPA+CronHPA组合应对业务复杂弹性伸缩场景

华为云CCE服务通过将HPA与CronHPA组合,实现指标弹性策略与定时弹性策略的有机协同,满足了客户业务复杂的弹性伸缩场景。本文分享自华为云社区《通过HPA+CronHPA组合应对业务复杂弹性伸缩场景》,作者:云容器大未来。背景 在k8s集群中,容器水平自动伸缩(HPA),可以根据容器资…

Linux基础知识(Ubuntu)

文件权限 意义权限类型 1. r 可读 2. w 可写 3. x 可执行/切换陌路 4. - 无权限通配符 * 匹配0个或多个字符串 ?匹配1个字符 [abcd] 匹配abcd中间任意一个字符 [a-Z] 匹配a-Z范围里的任意一个字符 [!abc] 不匹配方括号里的任何一个字符 ;与[^abc]一致帮助命令 man 语法 man […

join、inner join、left join、right join、outer join的区别

什么是联结?union、intersect等集合运算,它的特征是以 “行” 为单位进行操作,通俗点说,就是进行这些集合运算,会导致记录行数的增减,使用union会增加记录行数,使用 intersect 或 expect 会减少行记录,集合运算不会导致 “列” 数量的改变。而联结(join) 操作,就是将其…

基于.net core 七牛云上传多图片

一、基于.net core 七牛云上传图片上传创建七牛云账号,链接:https://portal.qiniu.com/home 新建空间(可以选择华北,可设置公开或私有(公开返回前台不需要token))单图片上传 /// <summary> /// 上传文件 /// </summary> /// <param name="file"…

Hadoop集群配置免密SSH登录方法

K8s集群配置免密ssh登录 K8S集群包含1个主节点和2个从节点,需要实现各节点之间的免密码登录,下面介绍具体的实现方法。 一、K8s集群环境 二、免密登录原理 每台主机authorized_keys文件里面包含的主机(ssh密钥),该主机都能无密码登录,每台主机的authorized_keys文件里面…

element-ui里选择器select多选

select默认情况下都是单选(如上图),但有时候就需要多选,那就需要添加multiple属性,但这样的话数据会一直叠加,把选择框撑大,如下图:这样的话需要添加 collapse-tags 属性将它们合并为一段文字,效果如下:但如果选多了,清除会不方便,那样的话需要添加clearable属性,…

Oracle11g-EXP-00091错误

环境说明 oracle 11g win10 问题情况 在终端中exp导出数据库时,遇到报错“EXP-00091”,按照网上教程修改NLS_LANG但是没有效果。最终原因 在power中设置环境变量NLS_LANG的方法与CMD不一样。 备注记录 先通过服务端查询编码集 select * from nls_database_parameters t where…

Python03判断语句

Python03判断语句 比较运算符if语句

统一文件传输平台如何建设 才能实现文件传输受管、可控、高效?

统一文件传输平台是为了满足企业或组织在不同网络区域间安全、高效地传输文件的需求而设计的系统。这样的平台通常具备以下特点: 1、跨区域传输能力:支持在不同地理位置的分支机构或数据中心之间传输文件。 2、安全性:提供加密传输、用户认证、权限控制等安全特性,确保数据…