2015-09-25 62 views
3

我试图通过电子邮件确认为我的Web应用程序实现注册过程。我正在使用IdentityServer3.AspNetIdentity服务。如何扩展Microsoft.AspNet.Identity.IUser <TKey>

public class AspNetIdentityUserService<TUser, TKey> : UserServiceBase 
    where TUser : class, Microsoft.AspNet.Identity.IUser<TKey>, new() 
    where TKey : IEquatable<TKey> 
{ 

我的问题是TUSER这需要Microsoft.AspNet.Identity.IUser接口。在我实现的函数中,传入的用户上下文是正确的,但我无法访问在以下两个图像中可以看到的所有属性。

enter image description here

enter image description here

http://img5.fotos-hochladen.net/uploads/b6aa42c662dd1kv063h4g5p.png http://img5.fotos-hochladen.net/uploads/d75b1e6462dd1wi9clqj6e7.png

你知道我怎么能Microsoft.AspNet.Identity.IUser延伸到我有机会获得姓氏和名字属性的效果?

+0

您应该创建自己的用户类并将其作为类型参数传递。 – SLaks

回答

1

这里TUserIdentityServer3中的一个自定义实现的类,它从用户身份的IdentityUser继承。

您无法访问这些属性,因为TUser是基类IdentityUserIUser所代表的IdentityServer3.Host.WebHost.AspId.User的对象。

Quickwatch将显示对象属性,但不会显示在智能感知中。

您需要将TUser转换为IdentityServer3.Host.WebHost.AspId.User

var user = new TUser() as IdentityServer3.Host.WebHost.AspId.User; 
user.FirstName = "Tester"; 
user.LastName = "Doer"; 

这应该给你提供解决方法。