簡體   English   中英

為什么我不能用新播種的超級用戶(Asp.Net Core Identity)登錄?

[英]Why can't I log in with the newly seeded power user (Asp.Net Core Identity)?

我有一個帶有身份的 Asp.Net Core 3.1 web 應用程序。 我使用此代碼將高級用戶播種到數據庫:

var poweruser = new ApplicationUser
{
    UserName = Configuration.GetSection("AppSettings")["UserName"],
    Email = Configuration.GetSection("AppSettings")["UserEmail"],
    FirstName = Configuration.GetSection("AppSettings")["UserFirstName"],
    LastName = Configuration.GetSection("AppSettings")["UserLastName"],
    PhoneNumber = Configuration.GetSection("AppSettings")["UserPhoneNumber"]
};

string userPassword = Configuration.GetSection("AppSettings")["UserPassword"];
var user = await UserManager.FindByEmailAsync(Configuration.GetSection("AppSettings")["UserEmail"]);

if (user == null)
{
    var createPowerUser = await UserManager.CreateAsync(poweruser, userPassword);
    if (createPowerUser.Succeeded)
    {
        await UserManager.AddToRoleAsync(poweruser, "SiteAdmin");
    }
}

appsettings.json中,“AppSettings”部分如下所示:

"AppSettings": {
  "UserName": "ab@cd.ef",
  "UserEmail": "ab@cd.ef",
  "UserFirstName": "Admin",
  "UserLastName": "Admin",
  "UserPhoneNumber":  "12345678",
  "UserPassword": "pa5sw&Rd"
}

用戶在數據庫中創建:

在此處輸入圖像描述

但是當我嘗試登錄時,登錄嘗試失敗。 我看過這個這個類似的帖子,但在這些情況下,用戶名和 email 地址並不相同。 就我而言,它們是(ab@cd.ef)。 我從 appsettings.json 復制粘貼了密碼,以確保我沒有輸入錯誤。

更新

這是接收登錄表單(Login.cshtml.cs)的方法:

public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
    returnUrl = returnUrl ?? Url.Content("~/");

    if (ModelState.IsValid)
    {
        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, set lockoutOnFailure: true
        var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
        if (result.Succeeded)
        {
            _logger.LogInformation("User logged in.");
            return LocalRedirect(returnUrl);
        }
        if (result.RequiresTwoFactor)
        {
            return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
        }
        if (result.IsLockedOut)
        {
            _logger.LogWarning("User account locked out.");
            return RedirectToPage("./Lockout");
        }
        else
        {
            ModelState.AddModelError(string.Empty, "Invalid login attempt.");
            return Page();
        }
    }

    // If we got this far, something failed, redisplay form
    return Page();
}

當一個難題的解決方法變得很簡單時,你不討厭它嗎?

在這種情況下,只需將PhoneNumberConfirmed設置為true ,我就可以登錄了......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM