.NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现 (2)

回想一下我们之前的登录实现过程,登陆成功后再把登录信息保存到Cookies或者Session里面,而在ASP.NET Core中我们知道,借助ASP.NET Core Identity 我们可以实现一个用于创建和维护用户登录的完整的,功能齐全的身份验证提供程序。当然,这里为了实现我们自己的登录逻辑,所以我们只使用基于基于cookie的身份验证,即将基于cookie的身份验证用作没有ASP.NET Core Identity的独立身份验证提供程序。

登录流程

登录流程如下图所示:

1548227608836

这里的流程很简单,相信大伙扫一眼应该就能明白.

功能实现

这一小节我们就来一步一步的实现我们的登录功能吧,在开始之前呢,先看下我们的登录界面,如下图所示:

1548230956610

由于我们这里用到了基于cookie的身份认证,所以如果应用程序没有使用Microsoft.AspNetCore.App元数据包,那么你需要再你的项目文件中添加Microsoft.AspNetCore.Authentication.Cookies Nuget包(版本2.1.0或更高版本

在ConfigureServices 方法中,通过添加AddAuthentication以及AddCookie方法来注入身份认证服务,代码如下:

1548229031153

当然你还得在Configure 中启用认证服务

1548229098034

接下来就是登录页面的加载代码如下:

1548229177929

这里有一个returnUrl 用来返回退出前的页面,默认返回首页

这里页面js的判断流程的js代码我就不贴出来了,如果有兴趣你可以访问文章底部的Github上的源码进行查看

代码提交后我们要首先验证验证码是否有效,然后判断错误次数是否超了,然后再次对实体进行规则性验证,最后才进行登录的操作,具体的代码有点长,下面只贴出部分重要的代码

判断验证码是否有效:

1548229395473

判断错误次数是否超过规定的最大允许错误数:

1548229426882

服务端对实体代码规则判断:

1548229463945

登陆的具体代码:

1548229561875

这里登录成功就进行登录次数,最后登录时间以及IP的记录,然后写入管理员操作日志中.
最后所有验证通过后,直接调用HttpContext.SignInAsync 方法即可登录成功.这里我们在Claim中存放了很多我们后面需要用到的信息.

1548229703834

页面中处理返回结果,成功则调整到'ReturnUrl' 不成功则停留在登录页面.

1548229846061

好了,登录功能到现在就演示完成了,我们登录测试下,然后看一下吧!

当没有输入验证码时:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyjsy.html