首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET核心标识“用户验证失败: InvalidUserName”同时试图更新现有用户的设置

ASP.NET核心标识“用户验证失败: InvalidUserName”同时试图更新现有用户的设置
EN

Stack Overflow用户
提问于 2022-07-26 18:56:20
回答 1查看 303关注 0票数 0

我有一个函数在我的代码,改变我的网站的视觉主题,以匹配他们选择的选择。这在我的开发设置中没有问题,但在生产(Azure )中,它实际上无法用正确的主题更新数据库和用户对象。

我得到的唯一错误消息是控制台中的以下内容:

代码语言:javascript
运行
复制
[40m[1m[33mwarn[39m[22m[49m: Microsoft.AspNetCore.Identity.UserManager[13]
       User validation failed: InvalidUserName. 

考虑到这些代码,我似乎无法理解:

代码语言:javascript
运行
复制
    public async Task<IActionResult> ChangeThemeAsync(string theme)
    {
        bool res = Enum.TryParse(theme, out ColorTheme ct);

        if (!res)
        {
            return BadRequest($"Unable to change theme.");
        }

        var user = await _userManager.GetUserAsync(User);
        if (user == null)
        {
            return BadRequest($"Unable to load user with ID '{_userManager.GetUserId(User)}', so could not change theme.");
        }
        else
        {
            Console.WriteLine("NEW THEME: " + ct.ToString() + ", USER: " + user.UserName);
            user.UserTheme = ct;

            await _userManager.UpdateAsync(user);

            return RedirectToPage();
        }
    }

我清楚地获得了用户对象,然后在相同的函数中更新它,没有任何实际问题。使用Console.WriteLine,我可以验证是否将正确的值放入函数中。

这是WebsiteUser类,我还没有创建自己的UserManager或任何其他类(您可以告诉我,this SO question没有这样的问题):

代码语言:javascript
运行
复制
public class WebsiteUser : IdentityUser
{
    // to comply with laws like COPPA and stuff like that
    [PersonalData]
    public DateTime DateOfBirth { get; set; }
    
    [PersonalData]
    public string RealName { get; set; }

    [PersonalData]
    public string AboutMe { get; set; }

    [PersonalData]
    public string Location { get; set; }

    [PersonalData]
    public Gender Gender { get; set; }

    [PersonalData]
    public ColorTheme UserTheme { get; set; } = ColorTheme.None;
}

public enum Gender : byte
{
    [Display(Name = "Not set")]
    Unset = 0,
    Male = 1,
    Female = 2,
    [Display(Name = "Non-binary")]
    NonBinary = 3
}

public enum ColorTheme : byte
{
    None = 0,
    Dark = 1,
    Brown = 2,
    Blue = 3,
}

是什么导致了User validation failed: InvalidUserName,和/或我的本地设置与Azure是如何做到这一点有什么区别的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-27 02:11:47

所以我解决了我自己的问题。

在我的Startup.cs文件中,我列出了以下内容:

代码语言:javascript
运行
复制
    options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._+";

我测试的帐户的用户名中包含了一个'@‘,因为我在输入允许的字符限制之前已经创建了这个帐户。我没有注意到与此有关的任何问题,因为我没有测试更改任何这个帐户的设置在很长一段时间。所以我想这是我的责任。

但至少现在这个问题已经解决了。我添加了“@”字符作为允许的字符之一,现在一切都按预期进行了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73128447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档