2017-05-05 83 views
0

ASP.NET核心身份執行我想延長用戶類果園核心(果園2),添加一些額外的屬性,如名字,姓氏例如。 我知道我可以將這些信息存儲在一個單獨的實體(如UserProfile)中,但有時候只需使用我自己的IUser實現將會很方便。 它看起來像OrchardCore實現的「會員系統」耦合到Orchard.Users.Models.User類型。 我看到有一個服務果園核心

IUserService.CreateUserAsync(用戶用戶,...

也許這將是更好地使用IUSER接口而不是Orchard.Users.Models.User類型? 我試着從Orchard.Users.Models.User類繼承像

class MyUser : Orchard.Users.Models.User 
{ 
    .. 
} 

但是,當我試圖調用IUserService.CreateUserAsync(MYUSER)我得到了一個錯誤

`Unable to cast object of type 'YesSql.Indexes.DescribeContext`1[MyTestModule.Abstractions.Models.MyUser]' to type 'YesSql.Indexes.DescribeContext`1[Orchard.Users.Models.User]'.` 

由於Orchard Core使用Document storage DB,爲什麼我不能創建自己的IUser實現並使用它?將來它會被修復嗎?可能是現在的一些解決方法?

回答

0

回答我的問題,因爲這可能是給別人用。 用戶可擴展性是在現在合併爲主的「用戶」分支中實現的。

有多種解決方案

  1. 現在Orchard.User實現IEntity,你可能會因爲它的站點設置來實現使用驅動程序添加自定義屬性,完全相同的方式。就像我記得的那樣,是的,Sql不允許檢索和保存派生模型,很可能它是用來從Orchard.Users.User直接繼承的,但我不確定它是否會工作,因爲我記得,是的,Sql不允許檢索和保存派生模型。固定,需要檢查

  2. 如果上述解決方案不適合您的需求,例如您可能想要使用另一個像EF這樣的ORM。恐怕你必須實現IUser接口,在這種情況下,你需要重寫ASP.NET身份存儲服務(IUserStore,IUserService ..)+可能你需要重寫管理工具的「用戶」和「角色」UI,因爲他們依賴在標準Orchard的用戶實施。 你不需要重寫Orchard.OpenId,因爲它依賴於IUser接口,但是!如果您需要發佈自己定製的「授權聲明」,您可能需要覆蓋OpenId的控制器