AbpZero双重认证之短信的坑

一、什么是双重认证

所谓双重认证简单来说就是除了用户名密码方式外,还额外增加了一道登录屏障。登录时先输入用户名和密码,正确后会向邮箱或手机号发送一个验证码(取决于您采用何种方式,甚至可以采用银行的电子KEY啥的),输入的验证码如果正确的话,才可以登录系统。

二、AbpZero中使用双重认证特别需要注意的地方

1.发送的内容中没有验证码!

AbpZero项目中AbpUserManager类的RegisterTwoFactorProviders方法主要用于指定可用的验证信息发送提供程序,该方法中定义了发送信息的内容,信息内容从语言包中读取,可是在语言包中并没有该项!

所以需要在语言包文件中Localization/XX/XX-zh-CN.xml中添加相应的语言项,需要注意的是语言项中的内容一定要添加占位符!不然发送的内容中是没有验证码的

2.如何使用短信发送验证码?

1.后台需要开启双重认证,使用手机号验证这个就不说了

2.需要在项目中定义一个类来实现IIdentityMessageService接口,重写SendAsync方法来实现信息发送

    /// <summary>
    /// 发送信息验证码
    /// </summary>
    public class IdentitySmsMessageService : IIdentityMessageService, ITransientDependency
    {
        public ILogger Logger { get; set; }

        private readonly ISmsSender _iSMSSender;

        public IdentitySmsMessageService(ISmsSender iSMSSender)
        {
            Logger = NullLogger.Instance;
            _iSMSSender = iSMSSender;
        }

        public async Task SendAsync(IdentityMessage message)
        {
            /*
            //TODO: Implement this service to send SMS to users. This is used by UserManager (ASP.NET Identity) on two factor auth.
            Logger.Warn("Sending SMS is not implemented! Message content:");
            Logger.Warn("Destination : " + message.Destination);
            Logger.Warn("Subject     : " + message.Subject);
            Logger.Warn("Body        : " + message.Body);
            */
            var msg = new SmsMessage();
            msg.Mobile = message.Destination;
            msg.Content = message.Body;
            await _iSMSSender.SendAsync(msg);
        }
    }

3.账号必须要有手机号(PhoneNumber)且手机号是验证过的(IsPhoneNumberConfirmed),如果当前登录账号不满足这两个条件,则只能选择邮箱方式(因为邮箱在注册时是必须填写的),这个坑太深真的太深了。

时间: 2025-01-09 07:46:23

AbpZero双重认证之短信的坑的相关文章

github二次认证接收短信的问题

这两天登陆github都被提示说我账号的密码已经被归类,提醒我修改密码. 改密码的时候发现GitHub有个二次认证的功能,分别是app和sms短信认证.app这里就不讲了,我们讲一下github的短信认证吧,github现在短信是不支持中国区的手机号的. 他这里的代码如图: 然后就想,既然这样,那我直接按照他的格式添加一个吧,直接编辑源码添加了 <option value="+86">China +86</option> 之后没想到真收到短信,这里就二次认证成功

php接口,免认证的短信接口,每天单个号码140条以上

下面介绍一下kewail平台的短信php接口.官网链接:www.kewail.com // Works well with php5.3 and php5.6. namespace Kewail\Sms; require_once('SmsSenderUtil.php'); class SmsSingleSender {var $url;var $accesskey;var $secretkey;var $util; function __construct($accesskey, $secre

摩杜云通用免认证的短信接口,每天单个号码100条以上

下面介绍一下摩杜云平台的短信php接口.demo下载:https://www.mordula.com/experience.html#anchor-1 // Works well with php5.3 and php5.6.namespace Moduyun\Sms;require_once('SmsSenderUtil.php');class SmsSingleSender {var $url;var $accesskey;var $secretkey;var $util;function

4、ABPZero系列教程之拼多多卖家工具 集成短信发送模块

ABPZero并没有手机短信发送功能,现在我们来集成一个,为后面注册.登录作铺垫. 阿里云短信服务 首先需要在阿里云开通短信服务,连接地址 开通后,在签名管理中添加一个签名 在模板管理中添加一个模板,如下图所示 最后需要使用阿里云提供的.NET发送短信类库,下面可以直接下载我上传的类库,也可以去官方下载,然后提取我所说的2个类库(aliyun-net-sdk-core.dll.aliyun-net-sdk-dysmsapi.dll) 直接下载文件:https://files.cnblogs.co

使用ASP.NET Identity以手机短信实现双重验证

这篇文章将展示怎么使用SMS短信启动双重验证 创建一个ASP.NET 5项目 一开始,使用Visual studio 2015创建一个新的ASP.NET Web应用程序: 在下一步中选择ASP.NET 5 Templates中的Website项目模板,并在右侧面板中确认选择了Individual Authentication: 到这里,项目已经创建,这可能需要几分钟来加载,注意在Visual studio状态栏中指示正在下载的一些资源,Visual studio下载了一些它认为需要的文件作为应用

短信认证方案,用手机短信进行上网认证如何实现?

WFilter NGF的"Web认证"模块,提供了一系列的上网认证解决方案.包括如下认证方式: 本地用户名密码认证 AD域用户名密码认证 企业邮箱用户名密码认证 Radius用户名密码认证 微信WiFi认证 Facebook Wifi认证 除此,WFilter NGF还有一个"其他"的选项,利用这个选项,你可以扩展更多的用户认证方式,比如"短信认证",使用者必须输入自己的手机号码,获取验证短信后输入才可以上网.如图: 不过,要实现短信验证的功能,

2018 07 短信认证网关的具体实现

本文将介绍如何用WFilter NGF来实现短信认证网关,以及短信平台的具体实现步骤. 1. 首先要搭建短信Web服务 WFilter NGF的短信发送通过调用Web API来实现,支持Web API接口的短信平台很多(一些短信猫也可以支持Web API).下文中,我们以阿里云的短信服务为例.首先需要创建AccessKey,如下图: 选择或者创建短信模板,如图: 下载阿里云的sdk,以php sdk为例,下载后需要把sdk中的AccessKey都改成第一步中创建的Key值.如图: 访问smsde

php短信接口,免认证限制少的接口,手机短信,短信验证码

下面介绍一下kewail的短信接口,链接:https://www.kewail.com/ // Works well with php5.3 and php5.6. namespace Kewail\Sms; require_once('SmsSenderUtil.php'); class SmsSingleSender {var $url;var $accesskey;var $secretkey;var $util; function __construct($accesskey, $sec

iOS 短信认证

短信验证 现在很多的短信验证平台,我们比较常用的有移动开发者服务平台 根据短信验证文档来集成 1. 找到iOS短信验证的集成开发文档 2. 下载SDK和Demo目录结构  3. 运行Demo 4. 写自己的测试Demo按照文档一步步操作即可. 1. 创建项目 2. 导入SVProgressHUD和SMS_SDK 3. 添加依赖库文件 必要:   libicucore.dylib libz.dylib MessageUI.framework javascriptcore.framework lib