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

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

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

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 2643
پاسخ دهنده : 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 رتبه: 7016
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود