Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Aký je rozdiel medzi haspermissiou a hasanypermissionto


Aký je rozdiel medzi haspermissiou a hasanypermissionto


Rozdiel medzi `haspermissionto` a` hasanypermissionTo` v kontexte balíka povolenia Spatie Laravel spočíva v tom, ako kontrolujú povolenia používateľov:

- Haspermission, či má používateľ konkrétne povolenie. Vráti „true“, ak má používateľ toto presné povolenie, buď priamo priradený alebo zdedený prostredníctvom rolí, a „false“ inak. Túto metódu môžete preniesť názov, ID alebo povolenie. Je užitočné, keď chcete overiť jedno konkrétne povolenie pre používateľa.

- Hasanypermission, či má používateľ * nejaké * jedno z viacerých povolení prenesených ako pole alebo zoznam. Vráti sa „true“, ak má používateľ aspoň jedno zo zadaných povolení, a „false“, ak nie je priradený žiadny z nich. Táto metóda je vhodná, keď chcete povoliť prístup, ak má používateľ aspoň jedno povolenie zo súboru možných povolení.

Ďalšie dôležité poznámky:

- Obe metódy kontrolujú povolenia priradené priamo používateľovi, ako aj tie zdedené od rolí.

- Tieto metódy nepovažujú Laravelovu bránu „pred„ spätným volaniam alebo funkčnosti obtoku super-admin. Z tohto dôvodu by ste mali namiesto toho používať metódy Laravel's `Can ',` Canany` alebo `Canall", ktoré sa integrujú s bránami a politikami a podporujú super-admin logiku.

- `Haspermissionto` je určený pre jednu kontrolu povolenia, zatiaľ čo„ HasanypermissionTo` je na kontrolu viacerých povolení, ak niekto stačí.

Stručne povedané, pri overovaní jedného povolenia použite „haspermissionto“ a ak chcete skontrolovať, či má používateľ aspoň jedno povolenie zo zoznamu, použite „hasanypermissionto“. Pre scenáre super-admin alebo zložitejšie autorizačné scenáre uprednostňujú namiesto toho vstavané metódy Laravela [1] [2] [5].

Citácie:
[1] https://spatie.be/docs/laravel-permission/v6/basic-usage/direct-permissions
[2] https://stackoverflow.com/questions/58093970/spatie-laravel-permissions-hate-and-haspermissionto-are-are-notworking
[3] https://github.com/spatie/laravel-permission/issues/79
[4] https://discuss.flarum.org/d/4817-difference-between-user-can-and-user-haspermission
[5] https://spatie.be/docs/laravel-permission/v6/basic-usage/role-permissions
[6] https://dev.to/nicolasmontifl/add-permissions-and-olles-to-your-laravel-project-2hhl
[7] https://www.reddit.com/r/laravel/comments/1e78vct/strategy_for_permission_and_authorization_design/
[8] https://www.honeybadger.io/blog/laravel-permissions-olles/