سلام - خسته نباشید دوستان
من تو Identity Core 2 مدل UserClaimsPrincipalFactory رو دارم کاستومایز میکنم.
توی کانستراکتورش ازم IOptions<IdentityOptions> optionsAccessor رو میخواد.
خیلی تلاش کردم ولی نمیدونم بهش چی پاس بدم. ممنون میشم راهنمایی کنید
محتوای فایل csporjخود را قرار بدید.
دستور زیر را اجرا کنید:
Install-Package Microsoft.Extensions.Options -Version 2.0.0
public class AppClaimsPrincipalFactory : UserClaimsPrincipalFactory<CustomUser, CustomRole> { public AppClaimsPrincipalFactory( UserManager<CustomUser> userManager , RoleManager<CustomRole> roleManager , IOptions<IdentityOptions> optionsAccessor) : base(userManager, roleManager, optionsAccessor) { } public async override Task<ClaimsPrincipal> CreateAsync(CustomUser user) { var principal = await base.CreateAsync(user); if (!string.IsNullOrWhiteSpace(user.FirstName)) { ((ClaimsIdentity)principal.Identity).AddClaims(new[] { new Claim(ClaimTypes.GivenName, user.FirstName) }); } if (!string.IsNullOrWhiteSpace(user.LastName)) { ((ClaimsIdentity)principal.Identity).AddClaims(new[] { new Claim(ClaimTypes.Surname, user.LastName), }); } if (!string.IsNullOrWhiteSpace(user.LastName) && !string.IsNullOrWhiteSpace(user.FirstName)) { ((ClaimsIdentity)principal.Identity).AddClaims(new[] { new Claim(ClaimTypes.Surname, user.DisplayName), }); } return principal; } }
حالا میخوام از این کلاس نمونه بسازم.
یوزر منیجر و رول منیجر رو پاس میدم. ولی کانستراکتور سومی رو نمیدونم چی پاس بدم
فایل csproj در مسیر پروژه شما قرار دارد.
آقای علیزاده مثل اینکه شما هنوز متوجه منظور بنده نشده اید.
AppClaimsPrincipalFactory a = new AppClaimsPrincipalFactory(_userManager, _roleManager, optionsAccessor);
تو خط بالا بجای optionsAccessor چی بنویسم؟؟؟
IOptions<IdentityOptions> باید به صورت فیلد تعریف شده و توسط سازنده کلاس مقدار دهی شود. ASP.NET Core به صورت خودکار وابستگی مربوط به IOptions<IdentityOptions> را به پارامتر ورودی سازنده تزریق می کند.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)