我一直在使用ASP。. NET identity 1.0在我之前的应用程序中,通过以下简单的教程,我成功地在我的用户类中实现了自定义属性:
public class CustomUser : IdentityUser
{
public string ContactName { get; set; }
public string CompanyName { get; set; }
public string Address { get; set; }
public string Postcode { get; set; }
public string Country { get; set; }
public string Phone { get; set; }
public string Fax { get; set; }
public string Email { get; set; }
public bool Subscription { get; set; }
}
所以然后在AccountController注册方法我可以映射我的ViewModel到CustomUser和调用UserManager。方法,传递我的用户名和密码字符串,并在系统中注册新用户。
当我尝试在Identity v2.0中做同样的事情时,这是不可能的了。我注意到IdentityUser没有UserName, Claims, Id和以前可用的其他属性。另外,我注意到Email字段必须在新版本的IdentityUser的某个地方声明,因为我不允许在我的自定义用户中设置它。
我相信所有这些属性一定以某种方式被抽象了,但不知道是如何抽象的。我的问题是我如何设置我的CustomUser的用户名和电子邮件属性发送它注册现在?
我最近一直在研究这个问题,偶然发现了这个博客,它很好,但更重要的是有一个链接,可以安装一个完整实现的示例…
http://blogs.msdn.com/b/webdev/archive/2014/03/20/test宣布- rtm的asp -网-认同- 2 - 0 - 0. - aspx
基本上你是对的,有一个抽象允许改变类型的关键,但电子邮件和用户名等仍然在那里,只是在较低的水平。如果您继续查看继承对象的定义,就会找到它们。在遇到这个问题后,我已经实现了一个整数键…
Identity更改GUID为int
这是他们在Identity 2.0中的位置
namespace Microsoft.AspNet.Identity.EntityFramework
{
public class IdentityUser<TKey, TLogin, TRole, TClaim> : IUser<TKey>
where TLogin : Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin<TKey>
where TRole : Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole<TKey>
where TClaim : Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim<TKey>
{
// Summary:
// Constructor
public IdentityUser();
// Summary:
// Used to record failures for the purposes of lockout
public virtual int AccessFailedCount { get; set; }
//
// Summary:
// Navigation property for user claims
public virtual ICollection<TClaim> Claims { get; }
//
// Summary:
// Email
public virtual string Email { get; set; }
//
// Summary:
// True if the email is confirmed, default is false
public virtual bool EmailConfirmed { get; set; }
//
// Summary:
// User ID (Primary Key)
public virtual TKey Id { get; set; }
//
// Summary:
// Is lockout enabled for this user
public virtual bool LockoutEnabled { get; set; }
//
// Summary:
// DateTime in UTC when lockout ends, any time in the past is considered not
// locked out.
public virtual DateTime? LockoutEndDateUtc { get; set; }
//
// Summary:
// Navigation property for user logins
public virtual ICollection<TLogin> Logins { get; }
//
// Summary:
// The salted/hashed form of the user password
public virtual string PasswordHash { get; set; }
//
// Summary:
// PhoneNumber for the user
public virtual string PhoneNumber { get; set; }
//
// Summary:
// True if the phone number is confirmed, default is false
public virtual bool PhoneNumberConfirmed { get; set; }
//
// Summary:
// Navigation property for user roles
public virtual ICollection<TRole> Roles { get; }
//
// Summary:
// A random value that should change whenever a users credentials have changed
// (password changed, login removed)
public virtual string SecurityStamp { get; set; }
//
// Summary:
// Is two factor enabled for the user
public virtual bool TwoFactorEnabled { get; set; }
//
// Summary:
// User name
public virtual string UserName { get; set; }
}
}