[英]Best practices for integrating ASP.NET Identity - do they exist?
我正在使用一個新網站的ASP.NET身份,似乎沒有很多(任何?)示例如何以分離的方式執行此操作。 我不希望我的域模型的DomainUser
類必須從Microsoft.AspNet.Identity.EntityFramework.User
繼承,所以我創建了一個如下所示的類:
public class IdentityUser : User
{
public virtual DomainUser DomainUser { get; private set; }
}
我已經將ASP.NET Identity所需的DbSet
移動到與我的域模型相同的派生DbContext
類中,如本答案所示 。 我通過Fluent API將IdentityUser
單向鏈接到DomainUser
,如下所示:
modelBuilder.Entity<IdentityUser>().HasRequired(iu => iu.DomainUser).WithRequiredPrincipal();
這允許我主要將授權和身份驗證的問題與DomainUser
類中定義的行為DomainUser
。 這比將它們組合成一個類更好,但它仍然感覺很難看。 我仍然在我的Domain項目中引用了所需的ASP.NET Identity程序集。 我可以創建另一個項目,該項目僅包含我的IdentityUser類和對我的域程序集的引用以允許導航屬性,但這開始讓人感到困惑。
我覺得應該有更好,更清晰,更模塊化的方式將身份鏈接到域,而不會導致緊密耦合。
有沒有人想出更好的處理方法? 我希望能引起參與ASP.NET身份項目( Hao Kung等人)的人們的注意,為此提供方向。
這里討論了解耦ASP.NET身份的問題 。 您可以在開源項目SimpleSecurity中找到有關如何實現它的示例。
事實是,如果你要從IdentityUser繼承,那么ASP.NET身份相關的程序集就會出現。 您無法將Identity與ASP.NET分開。 問題中的原始示例並不會對您造成太大影響 - 在大多數情況下,如果您要在Domain項目中使用IdentityUser
,那么您最好只繼承IdentityUser
。
如果您的域項目確實需要沒有與ASP.NET相關的程序集,那么您可以在Web項目中保留與Identity相關的類,並在您的Domain項目中創建一個單獨的User
模型,並按照此處的建議創建兩個鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.