- جدول UserRoles جهت شبیه سازی رابطهی many-to-many در اینجا تعریف شدهاست و در اصل در اینجا دو رابطهی many-to-one و one-to-many وجود دارند. از این جهت که در EF Code First امکان دسترسی به این جدول (junction table) به صورت متداول و استاندارد آن
وجود ندارد. بنابراین اکنون که این جدول را در اختیار شما قرار دادهاند و با EF میتوان آنرا کوئری گرفت، امکان استفاده و سفارشی سازی آن را هم دارید. روابط بر اساس کلیدهای خارجی که در اینجا تعریف شدهاند شکل میگیرند و نه فیلدهای اضافی آن.
- فیلد تاریخ انقضاء یک نقش بهتر است به جدول Role اضافه شود و نه این جدول واسط.
- بعد از اضافه کردن این فیلد، کوئری گرفتن از آن توسط
سرویس RoleManger انجام میشود.
- همچنین فیلتر Authorize استاندارد، درکی از این فیلد جدید ندارد. به همین جهت باید آنرا هم سفارشی سازی کنید.
یک نمونهی آن در پروژهی Decision وجود دارد. این فیلتر
با Claims کار میکند و مزیت آن عدم مراجعهی مکرر به بانک اطلاعاتی است. این Claims هم پس از لاگین شخص در کوکی او ذخیره میشوند. برای نوشتن Claims سفارشی میتوانید از متد
GenerateUserIdentityAsync استفاده کنید و سپس آنرا در فیلتر Authorize سفارشی سازی شده، بخوانید. در ASP.NET Core Identity یک جدول جدید به نام
Role Claims برای همین کاربردها به صورت استاندارد پیش بینی شدهاست و مدیریت کوکیهای آن خودکار است. به علاوه در آنجا نیازی به سفارشی سازی خود فیلتر Authorize نیست و مفهوم جامعی را به نام Policies، برای سفارشی سازی دسترسیها و فیلتر Authorize معرفی کردهاند.