دسته بندی ها
11:08 1398/10/07

پنل اختصاصی باتوجه به نقش کاربران

مشخصات سوال کننده :
کاربر : rezamafakheri     امتیاز کاربر : 6     رتبه کاربر : 80
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 2676
هوش مصنوعی

پاسخ هوش مصنوعی

سلام،

برای پروژه ای که توصیف کردید، پیشنهاداتی دارم:

1. در مورد استفاده از جدول ApplicationUsers:

می توانید از یک جدول واحد با ستون های اضافی برای هر نقش استفاده کنید و در صورت نیاز از فیلدهای optional استفاده کنید. 
اما همچنین می توانید سه جدول مجزا برای هر نقش ایجاد کنید (مثلاً RegularUsers، Writers و Admins) که به تفکیک اطلاعات کاربران کمک می کند.

2. در مورد پنل های کاربران:

بهتر است از پنل های جداگانه برای هر نقش استفاده کنید تا هر نوع کاربر بتواند فقط به اطلاعات و قابلیت های مربوط به خودش دسترسی داشته باشد.
این کار به سادگی مدیریت و نگهداری برنامه کمک می کند، و هر نقش می تواند ویژگی های خاص خود را داشته باشد.

امیدوارم این اطلاعات به شما کمک کند!

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamdola 16:37 1398/10/07

سلام

با توجه به اینکه شما 3 نوع نقش متفاوت دارید، یعنی ادمین، نویسنده و کاربر عادی اگر دسترسی ها و منوهای این 3 نوع کاربر خیلی متفاوت هست با هم بهتره 3 پنل جداگانه قرار بدید. البته اگر 3 Area داشته باشید خیلی بهتره چون در این حالت 3 مسیر کاملا جدا ایجاد کردید که هیچ کاربری از مسیر کاربر دیگه اطلاعی نداره و از نظر امنیت پروژه هم بهتر هست.

 

اما در مورد اطلاعات کاربران شما باید در جدول AspNetUsers اونها رو نگهداری کنید. ولی در اینجا نکاتی وجود داره، اگر تعداد User های سیستم خیلی زیاد هست بهتره بعضی از اطلاعات رو به جداول دیگه ای منتقل کنید و توسط کلید خارجی به جدول User ارتباطشون بدید.

به عنوان مثال:

فرض کنید که شما لیست همه رشته های تحصیلی رو در یک جدول دارید و در جدول دیگه هم لیست گرایش های مختلف رو دارید و موقعی که کاربری رو ایجاد می کنید رشته تحصیلی و گرایشش رو مشخص می کنید. (مثلا رشته کامپیوتر --> گرایش نرم افزار)

خب در این حالت بهتره که اطلاعات رشته تحصیلی و گرایش رو داخل جدول User نذارید و یک جدول دیگه با فیلدهای UserID و CourseID و LessonID ایجاد کنید و آی دی کاربر، آی دی رشته تحصیلی و آی دی گرایش رو در این جدول نگهداری کنید تا حجم اطلاعات جدول User کمتر بشه.

 

اما همه کاربران باید در همین جدول AspNetUsers باشن و نمیشه 2 یا چندتا جدول User ایجاد کرد طبق اصول Identity

به این پاسخ امتیاز بدهید    1
امتیاز: 121 رتبه: 12
پاسخ دهنده : webasoo 09:03 1398/10/09

با توجه به نقش هایی که تعریف کردید؛ معمولا پنل نویسندگان و مدیران یکسان هست و کاربران عادی مجزا. یعنی یک 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 قرار میگیره و اطلاعات اضافی در جدوال وابسته قرار میگیرند.

به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7058
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود