在WebApi中使用自定义类而不是ApplicationUser



在我的项目中,我正在使用存储库模式,所以我想使用我的自己的类而不是ApplicationUser类。

因此,我相应地自定义了DbContext类。

这是我的类,我想用它来代替ApplicationUser。

public class AppUser : IdentityUser
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string ConfirmationCode { get; set; }
        public DateTime ConfirmationCodeSentDate { get; set; }
        [Key]
        public int Identifier {get;set;}
        public DateTime DateCreated  { get; set; }
        public DateTime LastModified {get; set;}
        public bool IsRemoved {   get;  set;}
    }

我的上下文类如下。

public class TestArchDbContext : IdentityDbContext<AppUser>
    {
        public TestArchDbContext()
            : base("TestArchDb")
        {
        }
        public IDbSet<Result> Results { get; set; }
        public static TestArchDbContext Create()    
        {
            return new TestArchDbContext();
        }
    }

现在AccountController 中有GetExternalLogin方法中的代码

 AppUser user = await UserManager.FindAsync(new UserLoginInfo(externalLogin.LoginProvider,
                externalLogin.ProviderKey));
 ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(UserManager,
                    OAuthDefaults.AuthenticationType);
                ClaimsIdentity cookieIdentity = await user.GenerateUserIdentityAsync(UserManager,
                    CookieAuthenticationDefaults.AuthenticationType);

我得到一个错误,AppUser不包含的定义GenerateUserIdentityAsync

我必须在哪里写这个方法。

我在控制器中添加了一个方法,它解决了我的问题。

 public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<AppUser> manager, AppUser user, string authenticationType)
        {         
            var userIdentity = await manager.CreateIdentityAsync(user, authenticationType); 
            return userIdentity;
        }

然后调用这个方法(而不是从AppUser对象调用,而是直接调用它,并传递用户对象

 ClaimsIdentity oAuthIdentity = await this.GenerateUserIdentityAsync(UserManager,user,
                    OAuthDefaults.AuthenticationType);
                ClaimsIdentity cookieIdentity = await GenerateUserIdentityAsync(UserManager,user,
                    CookieAuthenticationDefaults.AuthenticationType);

相关内容

  • 没有找到相关文章

最新更新