asp.net-core - 只有在 AspNetUsers 上的“EmailConfirmed”字段为真(NETCORE 3.1)时,具有有效凭据的用户才能登录
问题描述
在此链接之后,在我的服务器端 Blazor NetCore 3.1 应用程序中,我在 Startup.cs 中包含了以下代码段,但无论如何,它只接受 AspNetUsers 表中“EmailConfirmed”字段设置为 true 的用户的登录名,并且仅当用户名等于电子邮件时:
services.Configure<IdentityOptions>(options =>
{
// Default SignIn settings.
options.SignIn.RequireConfirmedEmail = false; // Requires a confirmed email to sign in.
options.SignIn.RequireConfirmedPhoneNumber = false; // Requires a confirmed phone number to sign in.
// 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;
// Lockout settings.
options.Lockout.DefaultLockoutTimeSpan = System.TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
// User settings.
options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = true;
解决方案
无论如何,它只接受用户的登录...
当您查看标准模板代码时,您还会看到以下语句:
services.AddDefaultIdentity<IdentityUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
. ...;
在此处将 true 替换为 false (或options => ...
完全删除该部分)。
并且仅当用户名等于电子邮件时
使用模板代码,这是很难避免的。在注册页面中,电子邮件值被复制到用户名字段。这是一个实际的措施,您需要确保唯一的用户名。
当你想改变这个(我不推荐它)时,你必须搭建注册和登录页面,也许更多,并改变代码和验证。
推荐阅读
- react-native - 运行 react-native run-android 时出现问题
- react-native - expo.constants 到底是什么?
- c - 如何让 fscanf 读取数据以“;”分隔的文件?
- python - Linux终端执行Python脚本的方式与空闲不同
- javascript - 如何让Parent DIV的Child DIV充当Parent DIV
- plugins - LibVLC v3.0.3 - 如何知道我的应用程序需要的唯一插件是什么?
- arrays - 使用 firebase 在 swift 中实现对提要帖子的评论
- php - 将 PHP/MySQL 数组编码为 JSON 的问题
- javascript - 为什么确认后我的 onclick 事件中的代码没有运行?
- java - MongoDB Java驱动程序API文档中可用的DBCursor和MongoCursor之间的区别