Różnica między „HasperMissionto” a „HasanyPermissionto” w kontekście pakietu uprawnień spatie Laravel polega na tym, jak sprawdzają uprawnienia użytkownika:
- HASPERMissionTo sprawdza, czy użytkownik ma określone pojedyncze uprawnienia. Zwraca „true”, jeśli użytkownik ma to dokładne uprawnienie, bezpośrednio przypisany lub odziedziczony za pomocą ról, a „false”. Możesz przekazać nazwę uprawnienia, identyfikator lub obiekt uprawnienia do tej metody. Jest to przydatne, gdy chcesz zweryfikować jedną konkretną zgodę dla użytkownika.
- HasanyPermissionTO sprawdza, czy użytkownik ma * jeden * jedną z wielu uprawnień przekazanych jako tablica lub lista. Zwraca „true”, jeśli użytkownik ma co najmniej jedną z określonych uprawnień, i „false”, jeśli żaden z nich nie jest przypisany. Ta metoda jest wygodna, gdy chcesz umożliwić dostęp, jeśli użytkownik ma co najmniej jedną zgodę z zestawu możliwych uprawnień.
Dodatkowe ważne notatki:
- Obie metody sprawdzają uprawnienia przypisane bezpośrednio do użytkownika, a także odziedziczone po role.
- Te metody nie biorą pod uwagę bramy Laravel `przed` `odwołania lub funkcjonalności pomostowania superadmina. W tym celu powinieneś zamiast tego użyć metod „Can”, `Canany 'lub„ Canall ”, które integrują się z bramami i zasadami i obsługują logikę super admin.
- `HasperMissionTo 'dotyczy kontroli pojedynczej uprawnień, podczas gdy„ HasanyPermissionto' służy do sprawdzania wielu uprawnień, w których ktoś wystarczy.
Podsumowując, użyj „HasPerMissionTo” podczas weryfikacji jednego zezwolenia i użyj „HasanyPermissionTo”, gdy chcesz sprawdzić, czy użytkownik ma co najmniej jedną zgodę z listy. W przypadku super-administracji lub bardziej złożonych scenariuszy autoryzacji preferuj wbudowane metody Laravel zamiast [1] [2] [5].
Cytaty:
[1] https://spatie.be/docs/Laravel-permission/v6/basic-usage/direct-permissions
[2] https://stackoverflow.com/questions/58093970/spatie-laravel-permissions-gate-haspermissionto-are-not-working
[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/nicolasmontielf/add-permissions-and-roles-to-your-laravel-project-2hl
[7] https://www.reddit.com/r/Laravev/comments/1e78vct/strategy_for_permission_and_authorisation_design/
[8] https://www.honeybadger.io/blog/Laravel-permissions-Roles/