在ASP.NET Core 5中创建Auth用户的问题

 2023-02-15    364  

问题描述

我有一个关于我的VS项目,基本上只有和ASP.NET Core 5网站启用了本地Auth.我可以注册本地用户,然后登录它们没有问题.但是,当我尝试以编程方式创建一个用户时,使用下面的代码,我知道用户是创建的,因为我可以在SQL中查看它,但是当我尝试登录时,我得到”禁止登录访问”错误.

  1. 我不知何故没有正确创建用户?

    在ASP.NET Core 5中创建Auth用户的问题

  2. 如何调试这一点以查看未验证的内容?

    public static async Task SeedDefaultUserAsync(UserManager<ApplicationUser> userManager)
    {
        string testUser = "user999";
        var user = await userManager.FindByNameAsync(testUser);
    
        if (user == null)
        {
            user = new ApplicationUser()
            {
                Email = testUser + "@gmail.com",
                UserName = testUser,
                EmailConfirmed = true,
                LockoutEnabled = false,
            };
    
            await userManager.CreateAsync(user, "Abc123@");
            Console.WriteLine("user: " + testUser + " available with password Abc123@.");
        }
    
        if (user == null)
        {
            throw new Exception("The password is probably not strong enough!");
        }
    }

我甚至尝试发送自己密码重置链接,重置密码,我仍然得到登录错误.

据我所知,

推荐答案

,当您在ASP.NET核心标识中登录时,它将称CansignInasync方法检查用户可以登录.

如果用户未通过,它将抛出”登录访问不允许”错误.

更多详细信息,您可以参考以下源代码:

protected virtual async Task<SignInResult> PreSignInCheck(TUser user)
    {
        if (!await CanSignInAsync(user))
        {
            return SignInResult.NotAllowed;
        }
        if (await IsLockedOut(user))
        {
            return await LockedOut(user);
        }
        return null;
    }



   public virtual async Task<bool> CanSignInAsync(TUser user)
    {
        if (Options.SignIn.RequireConfirmedEmail && !(await UserManager.IsEmailConfirmedAsync(user)))
        {
            Logger.LogWarning(0, "User cannot sign in without a confirmed email.");
            return false;
        }
        if (Options.SignIn.RequireConfirmedPhoneNumber && !(await UserManager.IsPhoneNumberConfirmedAsync(user)))
        {
            Logger.LogWarning(1, "User cannot sign in without a confirmed phone number.");
            return false;
        }
        if (Options.SignIn.RequireConfirmedAccount && !(await _confirmation.IsConfirmedAsync(UserManager, user)))
        {
            Logger.LogWarning(4, "User cannot sign in without a confirmed account.");
            return false;
        }
        return true;
    }

所以我建议你可以检查你的startup.cs,以确保你把手机或要求设置为false,如下所示,如果您启用了其他所需信息,则应将其设置为您的应用程序.

除,默认情况下,用户名也是一种电子邮件格式,请修改您的代码以将用户名设置为电子邮件. UserName = testUser + "@gmail.com",

public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
        services.AddDatabaseDeveloperPageExceptionFilter();

        services.AddDefaultIdentity<IdentityUser>(options =>
        { options.SignIn.RequireConfirmedAccount = false;
            options.SignIn.RequireConfirmedEmail = true;
            options.SignIn.RequireConfirmedPhoneNumber = false;

        })
            .AddEntityFrameworkStores<ApplicationDbContext>();
        services.AddControllersWithViews();
    }

以上所述是小编给大家介绍的在ASP.NET Core 5中创建Auth用户的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33734.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。