سلام
قصد ایجاد یک پروژه رو دارم که
1 - کاربران این سایت 3 نوع نقش مختلف دارن ( کاربر عادی ، نویسنده ، ادمین)
2 -کاربران دارای پنل های اختصاصی با توجه به نقششون باشن
3 - موقع ثبت نام اطلاعات کاربران ( کاربر عادی ، نویسنده ، ادمین) با هم متفاوت است
با توجه به توضیحات بالا ممنون میشم در مورد مسایل زیر راهنمایی کنید.
1 -چون از کلاس Identity استفاده میکنم باید تمام اطلاعات کاربران در جدول ApplicationUsers ثبت بشه یا امکان تفکیک جدول کاربران با توجه به نقش کاربران وجود داره ؟؟؟
2 - از یک پنل برای 3 نقش (یک Area کلی برای 3 نقش) استفاده بشه یا از 3 پنل (3 Area برای هر نقش) تفکیک شده ؟
سلام
با توجه به اینکه شما 3 نوع نقش متفاوت دارید، یعنی ادمین، نویسنده و کاربر عادی اگر دسترسی ها و منوهای این 3 نوع کاربر خیلی متفاوت هست با هم بهتره 3 پنل جداگانه قرار بدید. البته اگر 3 Area داشته باشید خیلی بهتره چون در این حالت 3 مسیر کاملا جدا ایجاد کردید که هیچ کاربری از مسیر کاربر دیگه اطلاعی نداره و از نظر امنیت پروژه هم بهتر هست.
اما در مورد اطلاعات کاربران شما باید در جدول AspNetUsers اونها رو نگهداری کنید. ولی در اینجا نکاتی وجود داره، اگر تعداد User های سیستم خیلی زیاد هست بهتره بعضی از اطلاعات رو به جداول دیگه ای منتقل کنید و توسط کلید خارجی به جدول User ارتباطشون بدید.
به عنوان مثال:
فرض کنید که شما لیست همه رشته های تحصیلی رو در یک جدول دارید و در جدول دیگه هم لیست گرایش های مختلف رو دارید و موقعی که کاربری رو ایجاد می کنید رشته تحصیلی و گرایشش رو مشخص می کنید. (مثلا رشته کامپیوتر --> گرایش نرم افزار)
خب در این حالت بهتره که اطلاعات رشته تحصیلی و گرایش رو داخل جدول User نذارید و یک جدول دیگه با فیلدهای UserID و CourseID و LessonID ایجاد کنید و آی دی کاربر، آی دی رشته تحصیلی و آی دی گرایش رو در این جدول نگهداری کنید تا حجم اطلاعات جدول User کمتر بشه.
اما همه کاربران باید در همین جدول AspNetUsers باشن و نمیشه 2 یا چندتا جدول User ایجاد کرد طبق اصول Identity
با توجه به نقش هایی که تعریف کردید؛ معمولا پنل نویسندگان و مدیران یکسان هست و کاربران عادی مجزا. یعنی یک area عمومی داشته باشید و یک area مدیریتی.
برای پنل مشترک نویسندگان و مدیران میتونید خیلی راحت با توجه به نقش کاربر، منوها و دسترسی ها رو فیلتر کنید. استفاده از tag-helper های .net core جهت فیلتر منوی مدیریتی خیلی کار رو راحت میکنه: مثلا:
<security-trimming asp-area="" asp-controller="ControllerName" asp-action="ActinName">
<li>
<a href="@Url.Action("ActinName","ControllerName",new {area="" })">لیست مقالات</a>
</li>
</security-trimming>
کاربران همگی در جدول user هستند و بوسیله role های identity ، نقش هاشون مشخص میشه. و خیلی راحت میتونی برای هر کاربر چندتا نقش اختصاص بدی.(مثلا هم نویسنده باشه و هم مدیر...)
اطلاعات مشترک کاربران در همان جدول user قرار میگیره و اطلاعات اضافی در جدوال وابسته قرار میگیرند.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
57
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
97
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1348
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
116
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
395
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
562
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
57
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
97
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1348
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|