首页 > 解决方案 > 只有在 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;

标签: asp.net-coreblazorblazor-server-side

解决方案


无论如何,它只接受用户的登录...

当您查看标准模板代码时,您还会看到以下语句:

services.AddDefaultIdentity<IdentityUser>(options =>
    options.SignIn.RequireConfirmedAccount = true)
    . ...;

在此处将 true 替换为 false (或options => ...完全删除该部分)。

并且仅当用户名等于电子邮件时

使用模板代码,这是很难避免的。在注册页面中,电子邮件值被复制到用户名字段。这是一个实际的措施,您需要确保唯一的用户名。

当你想改变这个(我不推荐它)时,你必须搭建注册和登录页面,也许更多,并改变代码和验证。


推荐阅读