# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Core >  جداکردن پنل ادمین و مشتری

## Dream8

باسلام
تا به امروز روال این بود که کاربر وارد سایت شود و مشتری های خود را ثبت کند اما از امروز قرار شده تا مشتری ها نیز امکان ورود داشته باشند.
به نظر شما از area استفاده کنم بهتره یا از پروژه جداگانه یا فقط تعیین دسترسی و محدود کردن مشتری به صفحات خودش؟ 
سیستم از permission ها جهت دسترسی داینامیک استفاده میکنه و الان هم امکان این هست که با تعیین سطح دسترسی این امر محقق شود اما اینطور خواسته شده تا پنل مشتری و کاربر جدا باشد. مشتری یا حساب هست یا مخاطب ، کاربران هم در یک جدول جدا و بااستفاده از identity ثبت میشوند. 
بنظرتون بهتره که یک جدول جدا مشتری ها(که یا حساب هستند و یا مخاطب) به کمک identity ثبت شوند یا در همان جدول کاربران ولی با نقش مشتری؟

----------


## hakim22

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

معمولا این بخشها رو در جای جدا نگه داری کنیم مدیریتش در آینده ساده تر میشه. می توانید دسترسی های کل Area رو با ارث بری از یک کنترلر با دسترسی مشتری تنظیم کنید.

مشتری ها در واقع کاربر های سایت هستند و نیاز به جدول جدا ندارن. معمولا دلیلی برای ایجاد جداول با رابطه ی یک به یک نداریم. کاربرهای ادمین و مشتری رو می توانید با Role از هم جدا کنید.

----------


## rahmatipoor

با سلام
من تازه دارم core کار میکنم.
یه سوال دارم که به نظر اینجا مناسب هست که بپرسم

چرا توی ASP MVC به صورت پیش فرض گزینه اضافه کردن Area وجود داره ولی توی ASP CORE باید به صورت دستی برای هر Area پوشه های موردنیاز ایجاد بشن.

من فکر می کردم که شاید نظر مایکروسافت این باشه که از Area استفاده نشه بهتره

من یه پکیج آموزشی رو میدیدم خیلی قاطی کار می کرد. دو تا area تعریف کرده بود برای ادمین و یوزر که مثلا جدا باشه. دو تا رول هم متناظر با همین دو تا area برای یوزر و ادمین ایجاد کرده بود. ولی بعدش بعض جاها مثلا بعضی از اکشنهای تعدادی از کنترلهای مربوط به area ادمین رو با دستور Authorize در اختیار نقش کاربر قرار میداد. به نظر شما این کار درسته

----------


## rahmatipoor

> می توانید دسترسی های کل Area رو با ارث بری از یک کنترلر با دسترسی مشتری تنظیم کنید.


 اگه براتون ممکنه این مورد رو بیشتر توضیح بدید

----------


## hakim22

علت اصلی نبود Area اینه که هنوز به ویژوال استودیو اضافه نشده ولی میشه دستی اینکارو انجام داد. 
البته وقتی از Razor Page استفاده میشه دیگه استفاده از Area مفهومی نداره.




> بعضی از اکشنهای تعدادی از کنترلهای مربوط به area ادمین رو با دستور  Authorize در اختیار نقش کاربر قرار میداد. به نظر شما این کار درسته


بهتره که از این کار اجتناب کنیم ولی در یک پروژه ی واقعی این موضوع پیش میاد. اگر بخواهیم یک کنترلر رو هم در پنل ادمین داشته باشیم و هم در پنل کاربر کارمون زیاد میشه. 




> می توانید دسترسی های کل Area رو با ارث بری از یک کنترلر با دسترسی مشتری تنظیم کنید.


هر کنترلر از کلاسی به نام کنترلر ارث بری میکنه. شما خودتون هم می توانید یک کلاس کنترلر مادر درست کنید. Authorize رو براش تنظیم کنید و همه ی کنترلر هایی که در یک Area از این کلاس کنترلر جدید ارث بری می کنن.

----------


## rahmatipoor

ممنونم از لطفتون

----------


## Dream8

خیلی ممنون از پاسخ و کمکتون . 
الان هم مشتری و سایر کاربرها در یک جدول هستند و براساس نقش هایی که دارند از هم تمایز میشوند. اما جایی خوانده بودم که به لحاظ امنیت مشکل داره و این حرفا.
مشکلم بابت استفاده نکردن از area با این توضیحتون "می توانید دسترسی های کل Area رو با ارث بری از یک کنترلر با دسترسی مشتری تنظیم کنید."
حل شد :) 
تشکر

----------


## Dream8

یه سوال دیگه :
وقتی از Razor Pageها استفاده میکنیم ، امکان ایجاد و استفاده از پوشه های تو در تو رو داریم . آیا بازم نیاز به استفاده از area هست؟ یا فقط بخاطر جدا بودن و مشخص بودن بخش ها از area استفاده کنیم ؟ 
بین مشتری و ادمین اکثر بخش ها مشترک هست و مشتری یسری از بخش ها رو نباید دسترسی داشته باشه ، برای این کار بعد از لاگین به داشبورد جدا با layout جدا منتقل میشه تا اون منوها و لینک ها رو نبینه ، با این تفاسیر بازم باید از area استفاده کرد؟
آیا با استفاده از area امنیت بیشتری داریم؟!

----------


## hakim22

باید توجه کنید که Area هیچ ارتباطی با امنیت نداره و فقط برای جدا کردن بخشها هست.
 در ASP.NET Core میشه پروژه هایی از نوع Razor Class Library نوشت و کل یک Area رو برد به یک کتابخونه ی دیگه. در پروژه ای که بر مبنای Razor Page ساخته میشه این تنها کاربرد Area هست.

مدیریت امنیت در Razor Page ها از خیلی لحاض راحت تره.

https://www.aparat.com/v/SE3zO

----------


## Dream8

> باید توجه کنید که Area هیچ ارتباطی با امنیت نداره و فقط برای جدا کردن بخشها هست.
>  در ASP.NET Core میشه پروژه هایی از نوع Razor Class Library نوشت و کل یک Area رو برد به یک کتابخونه ی دیگه. در پروژه ای که بر مبنای Razor Page ساخته میشه این تنها کاربرد Area هست.
> 
> مدیریت امنیت در Razor Page ها از خیلی لحاض راحت تره.
> 
> https://www.aparat.com/v/SE3zO



بازم ممنونم

----------

