Anisi 301 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 (ویرایش شده) سلامبهترین راه برای ایجاد اسکریپت php با سطوح دسترسی که کاملا جزیی هم باشه چی هست؟ اگر جوملا و درو\ال رو دیده باشید نمونه بارز این سوال من هست. ممنوت میشم راهنمایی کنید. ویرایش شده تیر 93 توسط Anisi نقل قول لینک به ارسال
Mobin 1669 ارسال شده در تیر 93 گزارش بازنشر ارسال شده در تیر 93 لینکهای زیر به شما کمک میکنهhttp://www.tonymarston.net/php-mysql/role-based-access-control.htmlhttp://www.sitepoint.com/role-based-access-control-in-php/ 3 نقل قول لینک به ارسال
Anisi 301 ارسال شده در شهریور 93 مالک گزارش بازنشر ارسال شده در شهریور 93 (ویرایش شده) ممنونبهجاهای خوبی رسیدم. اما ی سوال:اون بخش های حساب کاربری و سطح دسترسی رو که طبق روش role based که توضیح داده پیاده کردم ...مشکل اصلی من در بخش جزئیات سطح دسترسیه، بویژه در بخش View-ها. به این صورت که مثلا ممکنه که یک فیلدی از یه فرم برای یه سری سطوح کاربری نمایش داده بشه و برای چندتا دیگه سطح کاربری نمایش داده نشه؛ یا مثلا بعضی متنها و نوشتهها برای سطح کاربری مختلف متفاوت باشن.اما همه سطوح کاربری به صورت داینامیک وارد میشن و به همین دلیل view-ها را نمیشه به صورت استاتیک تعریف کرد و با توجه به سطح کاربری نمایش داد.راهحلایی که به ذهن مبارکم رسید:- مثلا چند سطح کاربری (UserLevel) تعبیه کنیم و سپس اینگونه view هارا برای بخش های متفاوت طراحی و کدنویسی کنیممنظور از UserLevel استفاده از چند سطح برای نمایش view ها با توجه به سطوح کاربری اصلی است...- از روشی استفاده کنیم که دسترسی تک تک فیلد ها را در دیتابیس نوشته و سپس از طریق دسترسی و دیتابیس فیلد های خاص را نمایش دهیم...- یک سری از سطوح کاربری که فکر میکنیم باید به طور ثابت در سیستم باشند را پیشفرض قرار داده و برای انها view ها مختلف تولید کنیم و باتوجه به سطح کاربری نمایش دهیم و همچنین در مدیریت امکان افزودن سطوح کاربری جدید هم باشد اما با view های پیشفرض.- با توجه به توابعی که کاربر با آن ها دسترسی دارد و سطوج دسترسی به بخش های مختلف نیز از روی آن تعیین میگردد متوجه شویم سمت کاربر شویم : مثلا تنها سمتی که به تابع ارسال نظر بر روی طرح دسترسی ندارد دبیران هستند....و درنتیجه اگر کاربری به تابع ارسال نظر روی نامه که مثلا سطح کاربری فارغ از آنکه در مدیریت ، چه عنوانی در مدیریت برای سطح دسترسی وارد شده باشد میتوان نتیجه گرفت که مسئول مربوطه است و فیلد هایی که مسئول مربوطه با آن دسترسی دارد را نمایش داد.- فیلد های عمومی را داشته باشیم.... برای همه نمایش میدهیم...ویژگی های خصوصی هم مثل سطح دسترسی به دیگران اختصاص میدهیمامیدوارم قابل فهم گفته باشم! ویرایش شده شهریور 93 توسط Anisi نقل قول لینک به ارسال
Mobin 1669 ارسال شده در شهریور 93 گزارش بازنشر ارسال شده در شهریور 93 معمولا وقتی عملیاتی میخواهد انجام بشه سطح دسترسی ها چک میشه و بسته به اون دسترسی عملیات انجام میشهسطوج دسترسی به بخش های مختلف نیز از روی آن تعیین میگردد متوجه شویم سمت کاربر شویموقتی لایه view میخواهد خروجی رو ایجاد کنه بسته به دسترسی طرف میاد فیلدها رو تو خروجی قرار میده و نتیجه رو برای نمایش به سمت کاربر میفرسته 1 نقل قول لینک به ارسال
Anisi 301 ارسال شده در شهریور 93 مالک گزارش بازنشر ارسال شده در شهریور 93 معمولا وقتی عملیاتی میخواهد انجام بشه سطح دسترسی ها چک میشه و بسته به اون دسترسی عملیات انجام میشهوقتی لایه view میخواهد خروجی رو ایجاد کنه بسته به دسترسی طرف میاد فیلدها رو تو خروجی قرار میده و نتیجه رو برای نمایش به سمت کاربر میفرستهممنون، این که درست!ولی روش پیادهسازی این کار برای دیتابیس و شروطی که در کنترل باید بررسی بشه چی هست؟یعنی باید از مدیریت دونهدونه فیلدها تعیین کرد که کدوم گروه کاربری یا کاربر به اون دسترسی دارن؟!اگر نه معیار بررسی رو باید روی چی قرار داد؟ نقل قول لینک به ارسال
Mobin 1669 ارسال شده در شهریور 93 گزارش بازنشر ارسال شده در شهریور 93 معمولا به صورت دونه دونه جدا نمیشهبه صورت عموم مثلا وردپرس ببینین وقتی کسی وارد بخش ادمین میشه یا به یک صفحه دسترسی داره نقش اون کاربر یا ندارهاگه داره و وارد میشه هر چیزی که قابل دیدن هست رو میبینه مثل گریدها و جدولها ولی موقع ویرایش یا حذف دسترسیش چک میشه و اگه دسترسی داشت تغییرات اعمال میشهنمیدونم شما چه کاری میخواهید انجام بدید ولی معمولا یا یک سری نقش استاندارد تعریف میکنن مثلا مدیر-دبیر-دانش اموز و بر طبق این نقشها ویو ها ایجاد میشن و بسته به هر کدوم از این نقشهاگرید مناسب با اون در خروجی ویو رندر میشهمثلا برای 3 نقش 3 تابع که 3 نوع گرید رو ایجاد کنه ساخته میشهشما دقیقا بگید چه کاری میخواهید انجام بدید تا بهتر بشه نظر داد 1 نقل قول لینک به ارسال
Anisi 301 ارسال شده در شهریور 93 مالک گزارش بازنشر ارسال شده در شهریور 93 خوب اگر بخوایم بهصورت پیشفرض یهسری نقش داشته باشیم، دوباره توی گرفتن کوئریها و ایجاد محدودیت روی اونها باید توی بخش کنترلر برای هر گروه کاربری شرط بذاریم. بعدا اگر بخوایم یه نقش کاربری اضافه کنیم باید تمامی بخشها از جمله ویوها و کنترلها ویرایش بشن تا سطح دسترسی روی همشون اعمال بشه. نه؟! نقل قول لینک به ارسال
Anisi 301 ارسال شده در شهریور 93 مالک گزارش بازنشر ارسال شده در شهریور 93 (ویرایش شده) قصد من اینه که بتونم دسترسیها رو کنترل کنم با شرایط زیر:- بشه گروههای دسترسی رو از مدیریت کم و زیاد کرد- امکان تغییر سطوح دسترسی برای هر گروه از مدیریت وجود داشته باشه- view باتوجه به سطح دسترسی هر فرد ساخته بشه- امکان اعمال محدودیت با توجه به سطح دسترسی کاربر در تمامی بخشها از جمله کوئری گرفتن باشه- منوها باتوجه به سطح دسترسی کاربر نمایش داده بشن- هر کاربر در بخشها و گزارشایی که میبینه، فقط رکوردایی که به خودش و واحد خودش مربوطه رو ببینهمشکل از اینجا ایجاد میشه که تمامی گروههای دسترسی داینامیک هست و امکان این نیست که از چیزی تعیین بشه. مثلا تابعی که دسترسی فرد رو برای هر کوئری بررسی کنه و یا view رو ایجاد کنه.با ثابت گرفتن یک تعدادی نقش، بازم سخت میشه و فکر کنم اصولی نیست که تمامی بخشها (نمایش view، کوئریها) رو بهصورت دستی بررسی کنیم. مثلا قبل از نمایش هر منو و هر کوئری بذاریم:is_admin(){echo '<li>افزودن کاربر</li>}یاis_student(){$query="Select id, name, email from user where inserted_by = student"} ویرایش شده شهریور 93 توسط Anisi نقل قول لینک به ارسال
Mobin 1669 ارسال شده در شهریور 93 گزارش بازنشر ارسال شده در شهریور 93 خب شما یک بخش برای ایجاد سطح کاربری دارید و یک بخش برای مدیریت دسترسیدر قسمت مدیریت دسترسی شما باید فیلدهایی برای تمامی حالات و دسترسیهایی که مد نظرتون هست رو قرار بدیدمثلا دسترسی به فیلدهای بخش usersبعد دسترسی چیزهایی مثل منو-دسته بندی-برگه ها رو از داخل مدیریت منو -دسته بندی-برگه ها تنظیم میکنید مثلا یه لیست checkbox که لیست دسترسیها رو نشون بده و شما با تیک زدن مشخص کنید که کدوم نقشها دسترسی داشته باشنبعد موقع سلکت یا موقع ساخت منو چک کنین که کدوم منوها باید تو لیست نمایش باشه مثلا id نقشهایی که دسترسی دارن رو به صورت serialize بریزین تو یک فیلد از جدول منو مثلا به اسم access خب اگه ایدی نقش کاربر 3 باشه حالا موقع سلکت زدن اینجوری مینویسینselect * from menu where access like '%,3,%'چون سیستم که هوشمند نیست از دستورات پیروی میکنه مثلا دسترسی به صفحات استاتیک - دسترسی به فیلدها و ......مثلا تو یه جدول با این فیلدهاid , role_id , role_name , role_valueکه تمام دسترسیها درش ذخیره میشهخب حالا چند تابع مینویسین که با اینها کار کننمثلا یه تابع برای دسترسی به صفحات استاتیکیک تابع برای ایجاد کوئریاین کاری که شما میخواهید انجام بدید نیاز به کد نویسی زیاد داره باید روش زمان بزارید و کدنویسی کنید 1 نقل قول لینک به ارسال
Anisi 301 ارسال شده در شهریور 93 مالک گزارش بازنشر ارسال شده در شهریور 93 خیلی خیلی ممنونپس فعلا نیمهاستاتیک مینویسم، چون فرصت نیست و پروژه رو باید دی تحویل بدیم! اگر سوالی بود مزاحم میشم. نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .