لإنشاء UserManager
خارج نظام حقن الإعتماديات المضمن، يجب عليك توفير معظم الإعتماديات التي يحتاجها UserManager
للعمل بشكل صحيح. في مثالك، تبدو الإعتماديات المهمة هي IUserStore
, IPasswordHasher
, ILookupNormalizer
, IdentityErrorDescriber
, و ILogger
. ومعظم هذه الإعتماديات لديها تطبيقات افتراضية يمكنك استخدامها إذا لم تكن بحاجة لإجراء تخصيصات خاصة.
في حالتك، يمكنك استخدام البناء الافتراضي لمعظم الإعتماديات التي ليست لديك تخصيصات لها. هناك تطبيقات افتراضية لكل من IPasswordHasher
, ILookupNormalizer
, IdentityErrorDescriber
, و ILogger
يمكن استخدامها دون الحاجة إلى إنشاء تطبيقات جديدة. بالنسبة لـ IUserStore
, يمكنك استخدام UserStore
كما فعلت في مثالك.
للإشارة، إليك كيف يمكنك إنشاء UserManager
في مثالك:
csharppublic void Init()
{
// tenant contains connection string
context = new ApplicationDbContext(tenant);
var userStore = new UserStore(context);
var options = Options.Create(new IdentityOptions());
var passwordHasher = new PasswordHasher();
var userValidators = new List>();
var passwordValidators = new List>();
var keyNormalizer = new UpperInvariantLookupNormalizer();
var errors = new IdentityErrorDescriber();
var services = new ServiceCollection().BuildServiceProvider();
var logger = new Logger>(new LoggerFactory());
userManager = new UserManager(
userStore,
options,
passwordHasher,
userValidators,
passwordValidators,
keyNormalizer,
errors,
services,
logger
);
}
هذا الكود يستخدم تطبيقات افتراضية للإعتماديات التي لا تتوفر لديك تخصيصات لها، مما يسمح لك بإنشاء UserManager
خارج نظام حقن الإعتماديات المضمن.
المزيد من المعلومات
بالطبع، إليك بعض المعلومات الإضافية حول إنشاء UserManager
خارج نظام حقن الإعتماديات المضمن:
-
IUserStore
: يُستخدم للوصول إلى بيانات المستخدمين. يمكنك استخدامUserStore
الافتراضي لتخزين معلومات المستخدمين في قاعدة البيانات. -
IOptions
: يستخدم لتكوين سلوكUserManager
. يمكنك استخدامOptions.Create(new IdentityOptions())
لاستخدام الإعدادات الافتراضية. -
IPasswordHasher
: يستخدم لتشفير كلمات المرور. يمكنك استخدامnew PasswordHasher
لاستخدام مشفر كلمات المرور الافتراضي.() -
IEnumerable
> و IEnumerable تستخدم لتحديد القواعد التي يجب أن تتبعها كلمات المرور وبيانات المستخدم. يمكنك تمرير قائمة فارغة إذا لم تحتاج إلى تخصيصات خاصة.>: -
ILookupNormalizer: يستخدم لتوحيد النصوص. يمكنك استخدام
new UpperInvariantLookupNormalizer()
للاستخدام الافتراضي. -
IdentityErrorDescriber: يُستخدم لتوفير رسائل الخطأ القياسية. يمكنك استخدام الكائن الافتراضي
new IdentityErrorDescriber()
. -
IServiceProvider: يستخدم للوصول إلى خدمات إضافية إذا كنت بحاجة إلى ذلك. يمكنك استخدام
new ServiceCollection().BuildServiceProvider()
لإنشاء خدمة مزود الخدمات الافتراضي. -
ILogger
>: يستخدم لتسجيل الأحداث والأخطاء. يمكنك استخدامnew Logger
للاستخدام الافتراضي.>(new LoggerFactory())
باستخدام هذه المعلومات، يمكنك إنشاء UserManager
خارج نظام حقن الإعتماديات المضمن بطريقة صحيحة وفعالة.