Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mi a különbség a HasPermissionto és a HasAnyPermissionTo között


Mi a különbség a HasPermissionto és a HasAnyPermissionTo között


A „HasPermissionTo” és a „HasanyerMissionto” közötti különbség a Spatie Laravel engedélycsomag összefüggésében abban rejlik, hogy miként ellenőrizik a felhasználói engedélyeket:

- HasPermissiono ellenőrzi, hogy a felhasználónak van -e egy adott engedélye. Visszaadja a "True" -et, ha a felhasználónak van pontos engedélye, akár közvetlenül a szerepek alapján, vagy örökölve, és egyébként hamis. Ehhez a módszerhez átadhat egy engedélynevet, azonosító vagy engedélyobjektumot. Hasznos, ha egy adott engedélyt szeretne ellenőrizni a felhasználó számára.

- HASNAKERMISSISSISion ellenőrzi, hogy a felhasználónak * van -e * a többszörös engedélyek egyikének tömbként vagy listájában átadott. Visszaadja a "True" -et, ha a felhasználónak van legalább az egyik a megadott engedély, és "hamis", ha egyikük sem van hozzárendelve. Ez a módszer kényelmes, ha engedélyezni szeretné a hozzáférést, ha a felhasználónak legalább egy engedélye van a lehetséges engedélyekből.

További fontos megjegyzések:

- Mindkét módszer ellenőrizze, hogy közvetlenül a felhasználóhoz rendelt engedélyeket, valamint a szerepekből örökölt engedélyeket.

- Ezek a módszerek nem veszik figyelembe a Laravel kapuját a "visszahívások vagy a szuper-admin bypass funkciók előtt. Ehhez használnia kell a Laravel „Can”, `canany” vagy „Canall” módszereit, amelyek integrálódnak a kapukkal és politikákkal, és támogatják a szuper-admin logikát.

- A „HasPermissionTo” egyetlen engedély ellenőrzésére szolgál, míg a „HasAnyYPermissionTo” többféle engedély ellenőrzésére szolgál, ahol bármelyik elegendő.

Összefoglalva: használja a „HasPermissionto” -t, amikor egy engedélyt igazol, és használja a „HasanYPermissionTo” használatát, amikor ellenőrizni szeretné, hogy a felhasználónak legalább egy engedélye van -e egy listából. A szuper-admin vagy a bonyolultabb engedélyezési forgatókönyvek esetében inkább a Laravel beépített „CAN” módszereit részesíti előnyben [1] [2] [5].

Idézetek:
[1] https://spatie.be/docs/laravel-permission/v6/basic-usage/direct-permissions
[2] https://stackoverflow.com/questions/58093970/spatie-laravel-permissions-d-haspermissionto-e-not-working
[3] https://github.com/spatie/laravel-permission/issues/79
[4] https://discuss.flarum.org/d/4817-diverence-tween-user-can-and-user-haspermission
[5] https://spatie.be/docs/laravel-permission/v6/basic-usage/role-permissions
[6] https://dev.to/nicolasmontielf/add-permissions-and-stour-to-your-laravel-project-2hhl
[7] https://www.reddit.com/r/laravel/comments/1e78vct/strategy_for_permission_and_authorisation_design/
[8] https://www.hatoneybadger.io/blog/laravel-permissions-roles/