【问题标题】:The input is not a valid Base-64 string as it contains a non-base 64 character ASP.NET identity输入不是有效的 Base64 字符串,因为它包含非 base 64 字符的 ASP.NET 标识
【发布时间】:2015-05-30 05:27:38
【问题描述】:

我正在使用 asp.net 身份进行登录和身份验证。 使用以下方法登录时出现密码字段错误

model= 是用户实体

var user = await UserManager.FindAsync(model.UserName, model.Password);
                if (user != null)
                {
                    bool isPersistent = false;
                    await SignInAsync(user, isPersistent);
                    return RedirectToLocal(returnUrl);
                }

输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符

【问题讨论】:

  • 我也收到了这个问题。我不认为你正在使用 MySQL?您是否设法解决了这个问题?
  • 我也有这个问题,我用的是EF。但是我确实将 Pk 从字符串覆盖到 Int
  • 如果在 Password_Hash 中放入无效的哈希值,也会出现同样的错误
  • 我同意 user960567。您可以使用 Postman 或编写单元测试来创建具有适当密码的用户。根据加密类型,密码将如下所示:BBT+nIr3Mk5nmZNBL8b2vrWFvarWIJxNqefxHWHJ6ykeNGj+DTxt2k5P2eYolnDBOw==

标签: asp.net-mvc


【解决方案1】:

您使用的是 EF 吗?如果是这样,您不应该在您的 edmx 上添加 AspNetRoles、AspNetUserClaims、AspNetUserLogins 和 AspNetUserRoles。

此外,我总是使用下面的“登录”方法。如果我需要保留一些信息(如 userRole、userName 等),我会使用下面的 Session。

public async Task<ActionResult> Login(LoginViewModel model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        var user = await UserManager.FindAsync(model.Email, model.Password);
        //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        if (user != null)
        {
            string userRole = UserManager.GetRoles(user.Id).FirstOrDefault();
            Session["userRole"] = userRole;
            Session["userName"] = model.Email;
            await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError("", "Invalid username or password"); 
            return View(model);
        }
    }

所以你可以试试

await SignInManager.PasswordSignInAsync

await SignInManager.SignInAsync

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2012-09-22
    • 1970-01-01
    • 2020-11-22
    • 2021-07-16
    相关资源
    最近更新 更多