PDA

View Full Version : جداکردن پنل ادمین و مشتری



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

hakim22
سه شنبه 06 آذر 1397, 17:01 عصر
با سلام
معمولا بهتره یک Area جدا برای مشتری ها درست کنید. چون وقتی پنل جدا داشته باشن خود به خود به یک سری صفحه های اختصاصی هم نیاز دارند. مثل مشاهده ی خریدها ، پشتیبانی و پروفایل و تنظیمات و ...

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

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

rahmatipoor
چهارشنبه 07 آذر 1397, 10:12 صبح
با سلام
من تازه دارم core کار میکنم.
یه سوال دارم که به نظر اینجا مناسب هست که بپرسم

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

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

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

rahmatipoor
چهارشنبه 07 آذر 1397, 10:20 صبح
می توانید دسترسی های کل Area رو با ارث بری از یک کنترلر با دسترسی مشتری تنظیم کنید.

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

hakim22
چهارشنبه 07 آذر 1397, 11:21 صبح
علت اصلی نبود Area اینه که هنوز به ویژوال استودیو اضافه نشده ولی میشه دستی اینکارو انجام داد.
البته وقتی از Razor Page استفاده میشه دیگه استفاده از Area مفهومی نداره.



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


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



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


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

rahmatipoor
پنج شنبه 08 آذر 1397, 12:46 عصر
ممنونم از لطفتون

Dream8
دوشنبه 12 آذر 1397, 09:21 صبح
خیلی ممنون از پاسخ و کمکتون .
الان هم مشتری و سایر کاربرها در یک جدول هستند و براساس نقش هایی که دارند از هم تمایز میشوند. اما جایی خوانده بودم که به لحاظ امنیت مشکل داره و این حرفا.
مشکلم بابت استفاده نکردن از area با این توضیحتون "
می توانید دسترسی های کل Area رو با ارث بری از یک کنترلر با دسترسی مشتری تنظیم کنید."
حل شد :)
تشکر

Dream8
دوشنبه 12 آذر 1397, 09:26 صبح
یه سوال دیگه :
وقتی از Razor Pageها استفاده میکنیم ، امکان ایجاد و استفاده از پوشه های تو در تو رو داریم . آیا بازم نیاز به استفاده از area هست؟ یا فقط بخاطر جدا بودن و مشخص بودن بخش ها از area استفاده کنیم ؟

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

hakim22
دوشنبه 12 آذر 1397, 11:42 صبح
باید توجه کنید که Area هیچ ارتباطی با امنیت نداره و فقط برای جدا کردن بخشها هست.
در ASP.NET Core میشه پروژه هایی از نوع Razor Class Library نوشت و کل یک Area رو برد به یک کتابخونه ی دیگه. در پروژه ای که بر مبنای Razor Page ساخته میشه این تنها کاربرد Area هست.

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

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

Dream8
دوشنبه 12 آذر 1397, 15:09 عصر
باید توجه کنید که Area هیچ ارتباطی با امنیت نداره و فقط برای جدا کردن بخشها هست.
در ASP.NET Core میشه پروژه هایی از نوع Razor Class Library نوشت و کل یک Area رو برد به یک کتابخونه ی دیگه. در پروژه ای که بر مبنای Razor Page ساخته میشه این تنها کاربرد Area هست.

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

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


بازم ممنونم