ASP.NET Core:如何使用“用户名”而不是“电子邮件”登录?

玉米田

使用asp.net核心,所有登录页面和视图模型等都隐藏在引用的程序包中,因此无法直接更改。如何允许登录仍然使用用户名而不强制使用电子邮件?

Nan Yu

第一步是将身份标识到您的应用程序:

ASP.NET Core项目中的脚手架身份

然后,您可以自定义Register.cshtml/Register.cshtml.csLogin.cshtml/ Login.cshtml.cs,更新模型和视图,并更改OnPostAsync功能中的逻辑以适合您的要求。

根据您的要求,您可以按照以下步骤操作:

  1. 脚手架身份进入您的项目。
  2. 修改Register.cshtml.cs,将用户名添加到InputModel

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "User Name")]
    public string UserName { get; set; }
    
  3. 修改OnPostAsync方法:

    var user = new IdentityUser { UserName = Input.UserName, Email = Input.Email };
    
  4. 更新,Register.cshtml以包含UserName:

    <div class="form-group">
        <label asp-for="Input.UserName"></label>
        <input asp-for="Input.UserName" class="form-control"/>
        <span asp-validation-for="Input.UserName" class="text-danger"></span>
    </div>
    
  5. 修改Login.cshtml.csInputModel以将Email替换为UserName:

    [Required]
    [DataType(DataType.Text)]
    [Display(Name = "User Name")]
    public string UserName { get; set; }
    
  6. 修改Login.cshtml

    <div class="form-group">
        <label asp-for="Input.UserName"></label>
        <input asp-for="Input.UserName" class="form-control" />
        <span asp-validation-for="Input.UserName" class="text-danger"></span>
    </div>
    
  7. 修改Login.cshtml.cs OnPostAsync方法以使用用户名而不是电子邮件:

    var result = await _signInManager.PasswordSignInAsync(Input.UserName, Input.Password, Input.RememberMe, lockoutOnFailure: true);
    

默认情况下,ASP.NET Identity用于FindByNameAsync检查具有给定名称的用户是否存在,因此您无需重写中的PasswordSignInAsync功能SignInManager如果要使用电子邮件登录,可以单击此处进行更新。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.NET身份电子邮件/用户名更改

防止没有确认电子邮件的用户使用身份2登录ASP.Net MVC

在Asp.net mvc5中使用用户名代替电子邮件作为身份

ASP.NET Identity 2电子邮件和用户名的分隔,并使用电子邮件登录

使用MailKit的ASP .NET Core发送电子邮件

每次使用“不允许”(即使“电子邮件”和“用户名”具有相同的值),都无法使用ASP Identity登录。

ASP Net Core获取用户Windows用户名

如何使用ASP.NET Core从DbContext中的JWT获取用户名?

在ASP.NET Core中支持使用电子邮件或用户名登录同一用户

ASP.NET核心身份更改用户名/电子邮件

如何在ASP.NET Core 2.1中使用Serilog电子邮件

如何在2个小时的ASP Net Core之前向用户发送事件提醒电子邮件

如何使用Angular和ASP.NET Core 3.1确认电子邮件

如何通过接口获取当前登录的用户名,以在asp.net core mvc中按列插入更新?

如果在ASP.NET Core MVC中找不到用户,则使用电子邮件或用户名登录的用户将为空

如何更改ASP.NET Identity用户的电子邮件,而无需确认电子邮件?

如何在ASP.NET Identity 2.0 alpha 1中使用电子邮件登录?

更改Asp.NET身份验证以注册电子邮件地址,但不注册用户名

如何通过单点登录在asp.net中获取Windows登录用户名

如何将ASP.NET MVC默认登录页面更改为通过用户名而不是电子邮件地址登录?

如何在ASP.Net Web窗体身份中使用“用户名”而不是“电子邮件地址”登录

如何在ASP.net vb.net中获取当前用户ID的电子邮件

在ASP.NET Identity中将电子邮件设置为用户名

如何在 ASP.NET Core Identity 中控制器的构造函数中获取登录用户名

如何使用用户名和密码访问 Asp.Net Core 中的 MongoDb?

在 Angular 6 / ASP.Net Core 中注册、登录、确认电子邮件和密码重置

我可以从电子邮件地址而不是 ASP.NET Core 和 DirectoryServices 中的用户名获取用户身份吗?

ASP.NET Identity 注册新用户以使用用户名作为用户名而不是电子邮件,但仍不显示登录者

修剪用户名 ASP.NET 的电子邮件部分