使用ASP.NET Identity以手机短信实现双重验证
2015-09-01 21:16
639 查看
这篇文章将展示怎么使用SMS短信启动双重验证
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211523153-1892502451.png)
在下一步中选择ASP.NET 5 Templates中的Website项目模板,并在右侧面板中确认选择了Individual Authentication:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211525388-1394589947.png)
到这里,项目已经创建,这可能需要几分钟来加载,注意在Visual studio状态栏中指示正在下载的一些资源,Visual studio下载了一些它认为需要的文件作为应用程序解决方案的一部分。
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211527153-831328831.png)
创建Twilio账号 从”Account“选项卡,拷贝账户的SID和Auth token 从”Numbers“选项卡页面中,拷贝你Twilio电话号码 确保以上两项在你的应用程序中可用 在应用程序中添加Twilio的Nuget包 在MessageServices中添加代码来发送SMS短信
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211528872-1294115792.png)
注意:在dnxcore50中Twilio不可用,因为twilio不包含这个版本的nuget包,如果你需要在这个版本中使用,可以使用Twilio的REST API
1. 打开在Views/Manage目录下的Index.cshtml模板
2.取消注释的代码以让用户可以输入自己的电话号码:
3. 取消注释下列代码,让用户可以打开或者关闭双重验证:
1. 为应用程序注册一个新的用户:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211530263-20497083.png)
2. 在上部导航栏中,单击你的用户名邮件地址:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211531388-579130526.png)
3. 添加电话号码:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211532622-321090567.png)
4. 此时如果一切正常,你将收到一条来自上文中获取到的号码的短信:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211534435-409811357.png)
5. 在页面中输入收到的验证码:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211535794-1294805112.png)
6. 提交页面,电话号码就将显示在用户信息页面中:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211537169-646913153.png)
7. 点击Enable,开启双重验证:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211538513-891684354.png)
8. 退出,并用这个用户名和密码重新登陆,验证用户名密码通过后,将跳转到一个让你选择验证方式的页面,如果你有其他双重验证方式,例如二维码或者Email,下拉列表中将会存在对应选项:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211539763-1655283691.png)
9. 最后点击提交,输入收到的验证码,登陆成功:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211540763-191428010.png)
创建一个ASP.NET 5项目
一开始,使用Visual studio 2015创建一个新的ASP.NET Web应用程序:![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211523153-1892502451.png)
在下一步中选择ASP.NET 5 Templates中的Website项目模板,并在右侧面板中确认选择了Individual Authentication:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211525388-1394589947.png)
到这里,项目已经创建,这可能需要几分钟来加载,注意在Visual studio状态栏中指示正在下载的一些资源,Visual studio下载了一些它认为需要的文件作为应用程序解决方案的一部分。
运行应用程序
在项目加载结束后,运行这个应用程序,你将看到以下页面:![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211527153-831328831.png)
使用SMS短信进行双重验证
本教程使用Twilio,但是你也可以使用其他任何的SMS技术提供商。创建Twilio账号 从”Account“选项卡,拷贝账户的SID和Auth token 从”Numbers“选项卡页面中,拷贝你Twilio电话号码 确保以上两项在你的应用程序中可用 在应用程序中添加Twilio的Nuget包 在MessageServices中添加代码来发送SMS短信
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211528872-1294115792.png)
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
开启双重验证
应用程序已经包含了可以双重验证的代码,下文中步骤展示如何打开它:、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> @: | <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. 为应用程序注册一个新的用户:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211530263-20497083.png)
2. 在上部导航栏中,单击你的用户名邮件地址:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211531388-579130526.png)
3. 添加电话号码:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211532622-321090567.png)
4. 此时如果一切正常,你将收到一条来自上文中获取到的号码的短信:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211534435-409811357.png)
5. 在页面中输入收到的验证码:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211535794-1294805112.png)
6. 提交页面,电话号码就将显示在用户信息页面中:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211537169-646913153.png)
7. 点击Enable,开启双重验证:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211538513-891684354.png)
8. 退出,并用这个用户名和密码重新登陆,验证用户名密码通过后,将跳转到一个让你选择验证方式的页面,如果你有其他双重验证方式,例如二维码或者Email,下拉列表中将会存在对应选项:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211539763-1655283691.png)
9. 最后点击提交,输入收到的验证码,登陆成功:
![](http://images2015.cnblogs.com/blog/315836/201509/315836-20150901211540763-191428010.png)
禁用账户来防止暴力破解
我们推荐你应用双重验证时使用账户禁用,一旦用户执行登录,每次失败的尝试将会被记录,一旦到达设置的错误次数(默认是五次),当前账户将会倍禁用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 WebAPI 03 返回结果
- C# Eval在asp.net中的用法及作用
- C# Eval在asp.net中的用法及作用
- asp.net 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction
- asp.net将数据库中的数据赋给DropDownList
- asp.net将数据库中的数据赋给DropDownList
- asp.net 简单实现禁用或启用页面中的某一类型的控件
- asp.net 简单实现禁用或启用页面中的某一类型的控件
- Asp.net MVC JsonResult 忽略属性
- RouteCollectionExtensions.MapRoute 方法 (ASP.NET设置路由)
- ASP.NET MVC添加Action就找不到
- Aspose.words编程指南之Working with Document
- asp.net 时间的显示
- ASP.NET - 记录错误日志
- asp.net 后台根据数据库中的值 利用js给select标签赋选中值
- ASPose导出excel简单操作
- 注册asp.net 4.0 到iis
- asp.net中对amCharts(.net版)图形报表的使用
- Asp.net范例:amCharts(.net版)实现图形报表
- metasploit 连接postgresql可能遇见的问题