当前位置:网站首页>ASP.NET CORE3.1 Identity注册用户后登录失败的解决方案
ASP.NET CORE3.1 Identity注册用户后登录失败的解决方案
2022-04-23 05:55:00 【begeneral】
先看一下失败的情况吧:

这是我用自己的邮件注册的一个用户,注册是成功的,数据库中也有这条记录

但是大家看到EmailConfirmed字段的值为0,说明这个邮箱并没有经过验证。一般来说,如果是用邮箱进行注册,系统会发送一条验证邮件到你的邮箱。但是这里我没有验证这个邮箱。
其实问题就出在了这个字段了,那解决的办法就是让Identity在登录的时候不去验证这个邮箱,代码如下:
services.Configure<IdentityOptions>(options =>
{
// Password settings.密码配置
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 1;
//设置登录时是否需要经过验证的邮箱
options.SignIn.RequireConfirmedAccount = false;
// Lockout settings.锁定设置
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
});
设置的属性是:options.SignIn.RequireConfirmedAccount。设置完后重新登录,发现登录成功了。
我们也可以从ASP.NET CORE的源码中找到答案(需要先下载ASP.NET CORE3.1的源码)。我们登录使用的函数是SignInManager类中的PasswordSignInAsync函数,
源码位置:aspnetcore\src\Identity,打开Identity.sln解决方案,找到src\Microsoft.AspNetCore.Identiy\SignInManager.cs文件。找到PasswordSignInAsync函数后,一步一步转到
子函数的定义后,找到CanSignInAsync函数,函数代码截图如下:

刚才的设置是在这里判断的,这里的日志输出也可以在ASP.NET CORE的控制台看到:

版权声明
本文为[begeneral]所创,转载请带上原文链接,感谢
https://blog.csdn.net/niechaoya/article/details/114776527
边栏推荐
猜你喜欢
随机推荐
欢迎使用Markdown编辑器
Node accesses server-side static resources
微信小程序之点击取消,返回上页,修改上页的参数值,let pages=getCurrentPages() let prevPage=pages[pages.length - 2] // 上一页的数据
Palindromic Primes
谈谈v-if显示隐藏问题
Navicat 连接 oracle library is not loaded的解决方法
常用sql语句收藏
监听除某元素之外点击事件
Assembly base code example
Assembler 32-bit unsigned addition calculator
小米摄像头异常解决
获取当前一周的时间范围
服务器常见错误代码 总结
Vs can be compiled, but there will be a red underline to indicate the problem of undefined identifiers
查漏补缺(九)---程序篇
Makefile基础、常用函数及通用Makefile
SQLite compilation
查漏补缺(七)
千呼万唤始出来
var、let、const之间的区别









