5

我和一個同學正在使用Web API作爲我們的後端來處理Phonegap應用程序。以前我們有一個使用MVC4模板上的舊成員函數的工作原型。用EF代碼首先在VS 2013上擴展IdentityUser SPA AccountController

我們發現了一些相當不錯的教程,介紹如何在普通的mvc控制器上擴展IdentityUser。我們成功地完成了這項工作,但轉而使用VS 2013 SPA模板附帶的API帳戶控制器,但我們尚未設法使其運行。爲了簡化我們的問題,這裏基本上是我們想要做的。

假設我們有一個電影類是這樣的:

public class Movie 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ApplicationUser User { get; set; } 
} 

我創建了ApplicationUser像這樣(從個人賬戶的VS 2013 MVC模板服用):

public class ApplicationUser : IdentityUser 
{ 
    public string DisplayName { get; set; } 
} 

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 

    public DbSet<Movie> Films { get; set; } 
} 

我已經加入的Application_Start此行的Global.asax:

Database.SetInitializer<ApplicationDbContext>(new AppDbInit()); 

的AppDbInit類:

public class AppDbInit : DropCreateDatabaseAlways<ApplicationDbContext> 
{ 

} 

我Startup.Auth.cs改變了UserManagerFactory:

UserManagerFactory =() => new UserManager<ApplicationUser>(new UserStore<ApplicationUser>()); 

public static Func<UserManager<ApplicationUser>> UserManagerFactory { get; set; } 

在AccountController.cs文件我已經更換了IdentityUser所有出現的ApplicationUser代替。一旦完成,我開始通過Microsoft.AspNet.Identity.EntityFramework中的類文件來獲取錯誤,這些類文件使用IdentityUser類,說它無法將IdentityUser轉換爲ApplicationUser。 一個這樣的EntityFramework類是:

namespace Microsoft.AspNet.Identity.EntityFramework 
{ 
public class IdentityUserLogin 
{ 
    public IdentityUserLogin(); 

    public virtual string LoginProvider { get; set; } 
    public virtual string ProviderKey { get; set; } 
    public virtual IdentityUser User { get; set; } 
    public virtual string UserId { get; set; } 
} 

}

我創建了自己的類ApplicationUserLogin,我改變了用戶屬性類型ApplicationUser之一,這也不能工作。

這是我卡住的地方。我通過電子郵件發送並尋求幫助,並建議編寫自己的UserStore類來實現IUserStore接口。這是唯一的方式來擴展的asp.net身份創建或我關閉的EF代碼優先數據庫?我也許可以將我的用戶帳戶保存在一個數據庫中,其餘的保存在另一個數據庫中,但我更願意將其用於工作。

哦,這是我一直在使用,主要的文章(這就像我說我設法在工作,在標準MVC控制器): http://blogs.msdn.com/b/webdev/archive/2013/10/20/building-a-simple-todo-application-with-asp-net-identity-and-associating-users-with-todoes.aspx

回答

-1
+0

嗯,該教程不在帳戶控制器內進行單一更改,你確定這可以在Web api解決方案上工作嗎? –

+0

它與AccountController沒有任何關係。相反,您需要擴展IdentityUser模型以包含要包含的任何自定義值。 –

+0

好,所以你擴展了IdentityUser,但是你讓AccountController繼續與IdentityUser一起工作,並且只在你需要擴展屬性時調用ApplicationUser類? –