ASP.NET Core Identity 系列十二

这节我们主要介绍在ASP.NET Core Identity中如何锁定用户,Lockout功能为改善应用程序安全提供保障,当用户多次输入错误密码之后,用户账号就会被锁定,这个技术在防止黑客暴力攻击方面是非常有用的,特别是反复尝试猜测密码

1、配置用户锁定功能

在Identity中启用用户的Lockout功能,可以通过IdentityOptions 来配置,代码如下:

2e74dd7356df781997b12d302120288a.png

通过设置AllowedForNewUsers属性为true启用类用户Lockout特性,另外设置DefaultLockoutTimeSpan 为10 并指定用户Lockout的时间跨度为10分钟,通过设置MaxFailedAccessAttempts=3来指定用户最大的访问失败次数 

在AspNetUsers表中和lockout设置相关的有3列:

  • LockoutEnabled列指用户是否启用lockout功能

  • AccessFailedCount列记录用户登录失败的次数并且在账户锁定后重置为0

  • LockoutEnd列是一个DateTime 的类型,表示用户结束锁定的时间我们通过下图来展示一下:

b0748baf03316365572837d84915b0e3.png

2、在登录页面实现用户的Lockout功能

我们已经在ASP.NET Core Identity中创建了用户登录功能并实现了用户在登录过程中的认证,我们登录的功能在AccountController中,我们已经添加了一个检查功能(result.IsLockedOut)判断用户是否LockOut, 并且告诉用户等待10分钟后再次登录

62fe6df986cd4fc37b2cf2d354a5cfa3.png

第四列lockoutOnFailure设置为true,PasswordSignInAsync启用了Lockout功能

3、测试用户Lockout功能

运行应用程序测试该功能,我们使用错误的密码尝试登录几次,查看一下表AccessFailedCount 列,我们注意到这个值增长。

df20c5bdd2ab9aa5d53d7f638a146155.png

如果登录次数大于两次,我们将收到错误信息(你的账户已经被锁定,请等待10分钟后再次尝试),如下图所示:

5bb877f2e954ba3a6b2e70989d64db87.png

检查一下AccessFailedCount列,我们发现AccessFailedCount列值为0,并且LockoutEnd列被设置锁定时间的结束值,如下图所示:

6da1ef07e1a8ca2f3bbefad65c040b07.png

事实上,我们可以进一步通知用户锁定的账号,请他重置密码或向用户发送通知报告,如果他们没有登录,这意味着有人试图破账号

总结

在这节中我们主要涉及到图如下内容,如何在ASP.NET Core Identity 中创建Lockout 功能,如何实现用户的Lockout功能

源代码地址:

https://github.com/bingbing-gui/Asp.Net-Core-Skill/tree/master/AspNetCore.Identity/Identity

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值