چک کردن سطح دسترسی با اجرای تنها یک کوئری

[font="Tahoma"][rtl]

سلام،

وقتی از کلاس CDbAuthManager برای چک کردن سطح دسترسی استفاده میکنید، کدی شبیه این استفاده میکنید:

[/font][font="Tahoma"][font="Tahoma"][/rtl][/font]


Yii::app()->user->checkAccess('post');

[/font]

[font="Tahoma"][font="Tahoma"][rtl][/font]

که در پس کار این کوئری اجرا میشود:

[/font][font="Tahoma"][font="Tahoma"][/rtl][/font]


SELECT * FROM `auth_item` WHERE name='post'

[/font]

[font="Tahoma"][font="Tahoma"][rtl][/font]

در اینجا مشکلی به نظر نمیرسه، اما مشکل وقتی بروز میکنه که شما همزمان تعداد زیادی سطح دسترسی رو بخواهید چک کنید. برای اینکار هیچ راه و پارامتری برای چک کردن چند سطح دسترسی به صورت همزمان ندارید و با هر بار اجرای checkAccess حتماً یک کوئری گرفته میشه که این اصلاً خوب نیست!

برای حل موضوع من یک اکستنشن نوشتم که این مشکل رو حل میکنه و شما میتونید همزمان چندین سطح دسترسی رو چک کنید به طوری که تنها یک کوئری گرفته بشه.

ویژگی دیگه ای که این اکستنشن داره اینه که علاوه بر چک کردن سطح دسترسی کاربر جاری لاگین شده، میتونید سطح دسترسی کاربر دیگری که لاگین نیست را نیز چک کنید.

تنها درنظر داشته باشید که فعلاً از [/font][font="Tahoma"]bizRule پشتیبانی نمیکنه.

این اکستنشن رو از اینجا میتونید دریافت کنید:

http://www.yiiframew…auth-component

باتشکر

نبی

[/rtl][/font]