You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Identity注册报错:用户名无效,仅允许字母或数字

问题分析与解决方案

报错的核心原因是创建ApplicationUser实例时未赋值UserName属性,ASP.NET Core Identity默认要求UserName不能为空且符合字符规则,你仅设置了Name和Email,导致UserName为空,触发了该错误。以下是具体修复步骤:

1. 修正ApplicationUser实体类

IdentityUser已内置Email、UserName等核心属性,重复定义Email、Password、ConfirmPassword会引发冲突,且密码相关字段属于视图模型范畴,不应放在实体类中:

using Microsoft.AspNetCore.Identity;

namespace SLE_System.Data
{
    public class ApplicationUser : IdentityUser
    {
        // 仅保留自定义的Name字段
        public string Name { get; set; }
    }
}

2. 完善注册控制器的用户创建逻辑

创建用户时必须赋值UserName,可根据业务需求选择用Email或Name填充:

[HttpPost]
public async Task<IActionResult> Register(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser
        {
            Name = model.Name,                    
            Email = model.Email,
            // 关键:赋值UserName,示例用Email填充,也可改为model.Name
            UserName = model.Email
        };  

        var result = await _userManager.CreateAsync(user, model.Password);

        if (result.Succeeded)
        {
            await _signInManager.SignInAsync(user, isPersistent: false);
            return RedirectToAction("index", "Home");
        }

        foreach (var error in result.Errors)
        {
            ModelState.AddModelError("", error.Description);
        }
        // 移除重复的错误提示,避免混淆
        // ModelState.AddModelError(string.Empty, "Invalid Login Attempt");
    }

    return View(model);
}

3. 补全IdentityOptions配置

你之前的配置代码缺少闭合大括号,修正后确保字符规则生效:

services.Configure<IdentityOptions>(options =>
{
    options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
    // 若需用Email作为唯一标识,开启以下配置
    options.User.RequireUniqueEmail = true;
});

额外操作

  • 确保RegisterViewModel包含Name、Email、Password、ConfirmPassword字段,并添加[Required]、[EmailAddress]等验证特性,完善前端校验。
  • 执行数据库迁移:运行Add-Migration和Update-Database命令,同步实体类修改到数据库。

内容的提问来源于stack exchange,提问作者Rob644

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:30:51