我正在使用新的ASP.NET身份(RTM),我想知道如何将注册和登录从用户名更改为电子邮件.
我的想法是,我希望我的用户使用他们的电子邮件和密码注册(也可以使用外部登录获取电子邮件),并在顶部设置显示名称/用户名.
我查看了IdentityUser,我可以看到UserName存在,但是因为它包含在ASP.Net Identity中,无法更改.
我知道我可以使用'UserName'作为电子邮件,使用自定义验证器,然后为ApplicationUser添加一个名为DisplayName的额外属性,但这更像是一个hack而不是解决方案.
我希望我的问题很明确.提前致谢.
我需要将我的登录设置为使用用户名而不是电子邮件地址,我该如何更改?
如何在新的ASP.NET身份系统中使用电子邮件而不是用户名?
我试着改变RegisterViewModel班级:
[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string UserName { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是当我输入邮件地址时,我收到错误:
User name fsdfsd@fsdfsd.de is invalid, can only contain letters or digits.
Run Code Online (Sandbox Code Playgroud) 我需要将我的登录设置为使用用户名而不是电子邮件地址,我该如何更改?我到处都看,但它们是MVC代码而不是网络表单.
感谢您为我的问题找到解决方案的努力.
using System;
using System.Web;
using System.Web.UI;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Owin;
using Web_WebApp.Models;
namespace Web_WebApp.Account
{
public partial class Login : Page
{
protected void Page_Load(object sender, EventArgs e)
{
RegisterHyperLink.NavigateUrl = "Register";
// Enable this once you have account confirmation enabled for password reset functionality
//ForgotPasswordHyperLink.NavigateUrl = "Forgot";
OpenAuthLogin.ReturnUrl = Request.QueryString["ReturnUrl"];
var returnUrl = HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
if (!String.IsNullOrEmpty(returnUrl))
{
RegisterHyperLink.NavigateUrl += "?ReturnUrl=" + returnUrl;
}
}
protected void LogIn(object sender, EventArgs e)
{
if (IsValid)
{
// …Run Code Online (Sandbox Code Playgroud)