这篇文章将展示怎么使用SMS短信启动双重验证

创建一个ASP.NET 5项目

一开始,使用Visual studio 2015创建一个新的ASP.NET Web应用程序:

在下一步中选择ASP.NET 5 Templates中的Website项目模板,并在右侧面板中确认选择了Individual Authentication:

到这里,项目已经创建,这可能需要几分钟来加载,注意在Visual studio状态栏中指示正在下载的一些资源,Visual studio下载了一些它认为需要的文件作为应用程序解决方案的一部分。

运行应用程序

在项目加载结束后,运行这个应用程序,你将看到以下页面:

使用SMS短信进行双重验证

本教程使用Twilio,但是你也可以使用其他任何的SMS技术提供商。

  1. 创建Twilio账号
  2. 从”Account“选项卡,拷贝账户的SID和Auth token
  3. 从”Numbers“选项卡页面中,拷贝你Twilio电话号码
  4. 确保以上两项在你的应用程序中可用
  5. 在应用程序中添加Twilio的Nuget包
  6. 在MessageServices中添加代码来发送SMS短信

public static Task SendSmsAsync(string number, string message)
{
// Plug in your SMS service here to send a text message.
var twilio = new TwilioRestClient("YourTwilioSid", "YourTwilioToken");
var result = twilio.SendMessage("YourTwilioPhoneNumber", number, message);
return Task.FromResult(0);
}

注意:在dnxcore50中Twilio不可用,因为twilio不包含这个版本的nuget包,如果你需要在这个版本中使用,可以使用Twilio的REST API

注意:不要直接把账户信息写到代码里,上文中这样做知识尽量保持代码简洁,实际操作中,你需要使用Secret Manager处理这些机密信息

开启双重验证

应用程序已经包含了可以双重验证的代码,下文中步骤展示如何打开它:、

1. 打开在Views/Manage目录下的Index.cshtml模板

2.取消注释的代码以让用户可以输入自己的电话号码:

<dt>Phone Number:</dt>
<dd>
@(Model.PhoneNumber ?? "None") [
@if (Model.PhoneNumber != null)
{
<a asp-controller="Manage" asp-action="AddPhoneNumber">Change</a>
@: &nbsp;|&nbsp;
<a asp-controller="Manage" asp-action="RemovePhoneNumber">Remove</a>
}
else
{
<a asp-controller="Manage" asp-action="AddPhoneNumber">Add</a>
}
]
</dd>

3. 取消注释下列代码,让用户可以打开或者关闭双重验证:

<dt>Two-Factor Authentication:</dt>
<dd>
@if (Model.TwoFactor)
{
<form asp-controller="Manage" asp-action="DisableTwoFactorAuthentication" method="post" class="form-horizontal" role="form">
<text>
Enabled
<input type="submit" value="Disable" class="btn btn-link" />
</text>
</form>
}
else
{
<form asp-controller="Manage" asp-action="EnableTwoFactorAuthentication" method="post" class="form-horizontal" role="form">
<text>
Disabled
<input type="submit" value="Enable" class="btn btn-link" />
</text>
</form>
}
</dd>

使用双重验证登陆应用程序

运行应用程序,来展示双重验证:

1. 为应用程序注册一个新的用户:

2. 在上部导航栏中,单击你的用户名邮件地址:

3. 添加电话号码:

4. 此时如果一切正常,你将收到一条来自上文中获取到的号码的短信:

5. 在页面中输入收到的验证码:

6. 提交页面,电话号码就将显示在用户信息页面中:

7. 点击Enable,开启双重验证:

8. 退出,并用这个用户名和密码重新登陆,验证用户名密码通过后,将跳转到一个让你选择验证方式的页面,如果你有其他双重验证方式,例如二维码或者Email,下拉列表中将会存在对应选项:

9. 最后点击提交,输入收到的验证码,登陆成功:

禁用账户来防止暴力破解

我们推荐你应用双重验证时使用账户禁用,一旦用户执行登录,每次失败的尝试将会被记录,一旦到达设置的错误次数(默认是五次),当前账户将会倍禁用5分钟,以下的配置将在用户登录失败十次后禁用账户10分钟:

services.Configure<IdentityOptions>(options =>
{
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(10);
options.Lockout.MaxFailedAccessAttempts = 10;
});

原文地址:http://docs.asp.net/en/latest/security/2fa.html

使用ASP.NET Identity以手机短信实现双重验证的更多相关文章

  1. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework

    1.调用前组装参数 2.调用发送信息服务脚本   .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...

  2. 利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  3. ASP.NET MVC+Bootstrap 实现短信验证

    短信验证大家都已经非常熟悉了,基本上每天都在接触手机短信的验证码,比方某宝,某东购物.站点注冊,网上银行等等,都要验证我们的手机号码真实性.这样做有什么优点呢. 曾经咱们在做站点的时候.为了提高用户注 ...

  4. 循序渐进VUE+Element 前端应用开发(32)--- 手机短信动态码登陆处理

    在一些系统中,有时候用户忘记密码,可以通过向自己手机发送动态验证码的方式实现系统登录功能.本篇随笔介绍如何结合后端ABP框架的短信发送和缓存模块的处理,实现手机短信动态码登陆处理. 一般的登录方式,分 ...

  5. Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结

    Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码  用户操作 ,比如 ...

  6. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 忘记密码功能改进、手机短信、电子邮件

    由于我们的系统接近有100000个用户账户,经常会有忘记密码的时候,用户多了,很小的一个功能,每天都会有很多人在用,每个功能都非常友善,会提高提系统的效率,提高用户体验. 一天最多能返回3次手机短信, ...

  7. C#.NET 大型信息化系统集成快速开发平台 - 手机短信开发接口 4.0

    可以批量发信息给手机,相同的信息发给多个手机号码的效果图 已发送手机短信列表 可以批量发手机的功能,可以把先有的待发信息列表,直接通过批量发送功能发出 这个是设置发送模板公式的功能展示,可以设置发送的 ...

  8. js手机短信按钮倒计时

    /*   120秒手机短信按钮倒计时   */    exports.sendmessage = function (name) {        var second = 120; $(name). ...

  9. C#简单实现发送手机短信

    偶然想起,像编写一个从电脑向手机发送短信的程序,从网上查找到有三种方式:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2) ...

随机推荐

  1. [翻译] INSSearchBar

    INSSearchBar 效果: An animating search bar. 一个带动画效果的search bar. Originally developed for ShopNow v2. ( ...

  2. Oracle Order By 排序 非主键时 紊乱 重复 问题

    Oracle的分页查询是没有进行任何排序操作的,Oracle是顺序的从数据块中读取符合条件的数据返回到客户端. 而Oracle的排序算法不具有稳定性,也就是说,对于排序键值相等的数据,这种算法完成排序 ...

  3. Python学习---装饰器/迭代器/生成器的学习【all】

    Python学习---装饰器的学习1210 Python学习---生成器的学习1210 Python学习---迭代器学习1210

  4. Linux head/tail命令详解

    head命令用于显示文件的开头的内容.在默认情况下,head命令显示文件的头10行内容. tail命令用于显示文件的结尾的内容.在默认情况下,taild命令显示文件的后10行内容. head常见命令参 ...

  5. HBase Master高可用(HA)

    HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行. 所以这里要配置HBase高可用的话,只需要 ...

  6. hdu2102

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u014303647/article/details/27705195 题目链接: pid=2102& ...

  7. 2879. [NOI2012]美食节【费用流】

    Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽 ...

  8. 【bzoj 4154】[Ipsc2015]Generating Synergy

    题目 大概已经掌握熟练码出\(kdt\)的技能了 发现距离子树根节点\(x\)不超过\(l\)的点可以用两种方式来限制,首先\(dfs\)序在\([dfn_x,dfn_x+sum_x)\)中,深度自然 ...

  9. django CBV模式下如何去掉csrf验证

    方式一:from django.views.decorators.csrf import csrf_exemptfrom django.utils.decorators import method_d ...

  10. [JSOI2008]火星人

    嘟嘟嘟 嗯. splay维护哈希. 如题,用splay维护哈希,查找的时候二分.所以复杂度是取决于询问复杂度:\(O(n \log^ 2{n})\). 这道题还有一个技巧,就是一个节点记录的是他的子树 ...