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),如果当前登录账号不满足这两个条件,则只能选择邮箱方式(因为邮箱在注册时是必须填写的),这个坑太深真的太深了。

三、验证码和激活邮件有效期疑问
abpzero用户管理这块是基于identity framework实现的,查了很多资料,都没有看到验证码和激活邮件的过期时间,据说identity framework才会有这功能,不得不吐槽一下,太坑了。。。
AbpZero双重认证之短信的坑的更多相关文章
- github二次认证接收短信的问题
这两天登陆github都被提示说我账号的密码已经被归类,提醒我修改密码. 改密码的时候发现GitHub有个二次认证的功能,分别是app和sms短信认证.app这里就不讲了,我们讲一下github的短信 ...
- 4、ABPZero系列教程之拼多多卖家工具 集成短信发送模块
ABPZero并没有手机短信发送功能,现在我们来集成一个,为后面注册.登录作铺垫. 阿里云短信服务 首先需要在阿里云开通短信服务,连接地址 开通后,在签名管理中添加一个签名 在模板管理中添加一个模板, ...
- ABP集成短信发送模块
ABPZero并没有手机短信发送功能,现在我们来集成一个,为后面注册.登录作铺垫. 阿里云短信服务 首先需要在阿里云开通短信服务,连接地址 开通后,在签名管理中添加一个签名 在模板管理中添加一个模板, ...
- SpringBoot + Spring Security 学习笔记(五)实现短信验证码+登录功能
在 Spring Security 中基于表单的认证模式,默认就是密码帐号登录认证,那么对于短信验证码+登录的方式,Spring Security 没有现成的接口可以使用,所以需要自己的封装一个类似的 ...
- PHP开发实用-阿里短信服务(Short Message Service)
步骤 1 使用阿里云短信服务正常发短信需要 短信签名 短信模板 1申请短信签名 根据用户属性来创建符合自身属性的签名信息.企业用户需要上传相关企业资质证明,个人用户需要上传证明个人身份的证明. ...
- Luffy之注册认证(容联云通讯短信验证)
用户的注册认证 前端显示注册页面并调整首页头部和登陆页面的注册按钮的链接. 注册页面Register,主要是通过登录页面进行改成而成. 先构造前端页面 <template> <div ...
- 全新升级的WiFi无线上网短信认证系统,适用于咖啡厅、足浴等公共场所,提高门门店营业收入
WiFi无线上网短信认证系统经历从1.0到1.88的升级,都是用户在使用过程中,提出宝贵的意见,一直修复至今,有着非常稳定的版本. 这个软件有什么作用?WiFi为什么要认证呢? 其实这个只是获取用户联 ...
- Spring Security构建Rest服务-1203-Spring Security OAuth开发APP认证框架之短信验证码登录
浏览器模式下验证码存储策略 浏览器模式下,生成的短信验证码或者图形验证码是存在session里的,用户接收到验证码后携带过来做校验. APP模式下验证码存储策略 在app场景下里是没有cookie信息 ...
- 使用ASP.NET Identity以手机短信实现双重验证
这篇文章将展示怎么使用SMS短信启动双重验证 创建一个ASP.NET 5项目 一开始,使用Visual studio 2015创建一个新的ASP.NET Web应用程序: 在下一步中选择ASP.NET ...
随机推荐
- 张高兴的 UWP 开发笔记:手机状态栏 StatusBar
UWP 有关应用标题栏 TitleBar 的文章比较多,但介绍 StatusBar 的却没几篇,在这里随便写写.状态栏 StatusBar 用法比较简单,花点心思稍微设计一下,对应用会是个很好的点缀. ...
- 如何升级laravel5.4到laravel5.5并使用新特性?
如何升级laravel5.4到laravel5.5并使用新特性? 修改composer.json: "laravel/framework": "5.5.*", ...
- 【转】RAM 大全-DRAM, SRAM, SDRAM的关系与区别
http://blog.csdn.net/huleide/article/details/5506698 ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是R ...
- ASP.NET没有魔法——ASP.NET MVC 直连路由(特性路由)
之前对Controller创建的分析中,知道了Controller的创建是有两个步骤组成,分别是Controller的类型查找以及根据类型创建Controller实例. 在查询Controller的类 ...
- web开发|如何选择合适的webui框架
在市场中很多人分不清框架和库的区别,部分只知道框架模糊的概念.所以在选择webUI框架的时候就会仁者见仁智者见智,会存在各抒己见也是很正常的,这里整体都叫框架吧,在市场中不断的淘汰与创新,主要以Vue ...
- Oracle:sqlplus前缀显示当前用户
第一步:进入SQLPLUS的按照目录,cd $ORACLE_HOME/sqlplus/admin 第二步:查找ll vi glogin.sql 第三步:插入 命令行模式,Go, set sq ...
- python 使用标准库连接linux实现scp和执行命令
import stat import pexpect 只显示关键代码: sqldb = localpath+database //获取database名字 if os.path.exists(sqld ...
- 微信小程序用setData修改数组或对象中的一个属性值
在page中有如下数组 data: { info:[ { name:"yuki", tou:"../img/head.jpg", zGong:130, gMon ...
- Spring AOP分析(1) -- 基本概念
AOP全称是Aspect Oriented Programming,面向切面编程,是面向对象编程(OOP:Object Oriented Programming)的补充和完善.一般在系统中,OOP利用 ...
- node多版本管理--nvmw
最近要搭建koa2+node环境,发现需要node较高版本,不然ES6.7中的语法使用不了.就像安装多个版本的node,发现了nvmw. 1.下载nvmw https://github.com/ha ...