簡體   English   中英

覆蓋IdentityServer4中的UserClaimsPrincipalFactory時出現延遲加載問題

[英]Lazy Loading issue while overriding UserClaimsPrincipalFactory in IdentityServer4

嘗試添加ApplicationUser屬性作為身份聲明時,我有一個空聲明。 似乎ef對以下兩個屬性的延遲加載有問題。

public class ApplicationUser : IdentityUser
{
    public virtual ApplicationUser Manager { get; set; }
    public virtual List<ApplicationUser> ManagerOf { get; set; }
}

我知道我正在輸入這段代碼。 但是在GenerateClaimsAsync內部,用戶將其屬性設置為null(僅上述兩個)。 我在數據庫中簽入,我已經很好地定義了值。

public class MyUserClaimsPrincipalFactory : UserClaimsPrincipalFactory<ApplicationUser>
{
    public MyUserClaimsPrincipalFactory(
        UserManager<ApplicationUser> userManager,
        IOptions<IdentityOptions> optionsAccessor)
        : base(userManager, optionsAccessor)
    {
    }

    protected override async Task<ClaimsIdentity> GenerateClaimsAsync(ApplicationUser user)
    {
        var identity = await base.GenerateClaimsAsync(user);
        var managerId = "";
        if (user.Manager?.Id != null)
        {
            managerId = user.Manager.Id;
        }
        identity.AddClaim(new Claim("manager_id", managerId));
        var managerOf = "";
        if (user.ManagerOf != null)
        {
            managerOf = string.Join(", ", user.ManagerOf.Select(u => u.Id).ToArray());     
        }

        identity.AddClaim(new Claim("manager_of", managerOf));
        return identity;
    }
}

你們有個主意嗎?

謝謝 !

正如@mackie所指出的,默認情況下不啟用延遲加載。 我只需要按照以下教程啟用延遲加載: https : //www.learnentityframeworkcore.com/lazy-loading

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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