فهرست:

در مبحث قبل، ما در مورد آموزش احراز هویت کاربران در لاراول بررسی داشتیم در این مبحث سطح دسترسی کاربران را در لاراول برای شما توضیح می دهیم.

تفاوت بین احراز هویت و سطح دسترسی

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

مکانیسم سطح دسترسی در لاراول

لاراول مکانیسم ساده ای برای سطح دسترسی کاربران فراهم می کند که شامل دو روش اصلی Gates و Policies است.

پیاده سازی Gates و Policies در لاراول

از روش Gates برای تعیین اینکه آیا کاربر مجاز به انجام عملی خاص است استفاده می شود. آنها به طور معمول در فایل App/Providers/AuthServiceProvider.php با استفاده از نمای گیت تعریف می شوند و شامل توابعی هستند که برای انجام سازوکار سطح دسترسی کاربرد دارند ولی Policies در یک آرایه تعریف شده و کلاس ها و متد هایی که از مکانیسم سطح دسترسی مورد نظر استفاده می کنند را در بر می گیرد.

مثال زیر نحوه استفاده از Gates و Policies را برای سطح دسترسی کاربر در یک وب اپلیکیشن لاراول را نشان می دهد. توجه داشته باشید که در این مثال ، از متد boot برای مجوز دادن به کاربران استفاده شده است.

[pastacode lang=”php” manual=”%3C%3Fphp%0A%0Anamespace%20App%5CProviders%3B%0A%0Ause%20Illuminate%5CContracts%5CAuth%5CAccess%5CGate%20as%20GateContract%3B%0Ause%20Illuminate%5CFoundation%5CSupport%5CProviders%5CAuthServiceProvider%20as%20ServiceProvider%3B%0A%0Aclass%20AuthServiceProvider%20extends%20ServiceProvider%7B%0A%20%20%20%2F**%0A%20%20%20%20%20%20*%20The%20policy%20mappings%20for%20the%20application.%0A%20%20%20%20%20%20*%0A%20%20%20%20%20%20*%20%40var%20array%0A%20%20%20*%2F%0A%20%20%20%0A%20%20%20protected%20%24policies%20%3D%20%5B%0A%20%20%20%20%20%20’App%5CModel’%20%3D%3E%20’App%5CPolicies%5CModelPolicy’%2C%0A%20%20%20%5D%3B%0A%20%20%20%0A%20%20%20%2F**%0A%20%20%20%20%20%20*%20Register%20any%20application%20authentication%20%2F%20authorization%20services.%0A%20%20%20%20%20%20*%0A%20%20%20%20%20%20*%20%40param%20%5CIlluminate%5CContracts%5CAuth%5CAccess%5CGate%20%24gate%0A%20%20%20%20%20%20*%20%40return%20void%0A%20%20%20*%2F%0A%20%20%20%0A%20%20%20public%20function%20boot(GateContract%20%24gate)%20%7B%0A%20%20%20%20%20%20%24this-%3EregisterPolicies(%24gate)%3B%0A%20%20%20%20%20%20%2F%2F%0A%20%20%20%7D%0A%7D” message=”” highlight=”” provider=”manual”/]