这篇文章将展示怎么使用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. UNIX高级环境编程(5)Files And Directories - 文件相关时间,目录文件相关操作

     1 File Times 每个文件会维护三个时间字段,每个字段代表的时间都不同.如下表所示: 字段说明: st_mtim(the modification time)记录了文件内容最后一次被修改的时 ...

  2. php安装--php-5.3.28

    PHP的整合使用: 一.下载php源码包:https://pan.baidu.com/s/1Cied8ozHez4xJ9l1HQ7pKQ 二.把源码包放到/usr/src目录 三.解压源码包并进入目录 ...

  3. Linux uname命令详解

    uname常见命令参数 -a, --all print all information, in the following order, except omit -p and -i if unknow ...

  4. fiddler post 请求 webapi

    今天小伙伴遇到一个问题,大概就是说用fiddler post 一个参数,但是后台一直无法获取,如下 后来发现请求的条件有问题,而且也很容易忽略,正确如下 content-type的设定为默认值,pos ...

  5. September 28th 2017 Week 39th Thursday

    Every saint has a past and every sinner has a future. 圣人皆有过去,罪人皆有未来. If you were a sinner in the pas ...

  6. #003 React 组件 继承 自定义的组件

    主题:React组件 继承 自定义的 组件 一.需求说明 情况说明: 有A,B,C,D 四个组件,里面都有一些公用的逻辑,比如 设置数据,获取数据,有某些公用的的属性,不想在 每一个 组件里面写这些属 ...

  7. U-Mail:多方面因素避免EDM邮件进垃圾箱

    有很多做邮件营销的企业客户给U-Mail来电或来函咨询一件困扰他们的事:群发邮件时,要怎么样才能降低被收件人列入垃圾邮件的概率呢?其实关于这个问题,U-Mail小编已经请资深营销专家解答过多次了,经常 ...

  8. ResultJsonInfo<T>

    using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace QY.We ...

  9. 【转】 android中的文件操作详解以及内部存储和外部存储

    摘要 其实安卓文件的操作和Java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理.根据我的经验,初学者 ...

  10. iOS 基础函数解析 - Foundation Functions Reference

    iOS 基础函数解析 - Foundation Functions Reference 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名- ...