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