簡體   English   中英

集成ASP.NET標識的最佳實踐 - 它們是否存在?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM