Forskellen mellem `HasPermissionTo` og` HasAndermissionTo` i sammenhæng med den spatie Laravel -tilladelsespakke ligger i, hvordan de kontrollerer brugertilladelser:
- HasPermissionTo kontrollerer, om en bruger har en bestemt enkelt tilladelse. Det returnerer 'sandt', hvis brugeren har den nøjagtige tilladelse, enten direkte tildelt eller arvet via roller, og 'falsk' ellers. Du kan videregive et tilladelsesnavn, ID eller tilladelsesobjekt til denne metode. Det er nyttigt, når du vil verificere en bestemt tilladelse til en bruger.
- Hasanypermissionto kontrollerer, om en bruger har * nogen * en af flere tilladelser, der er gået som en matrix eller en liste. Det returnerer 'sandt', hvis brugeren har mindst en af de specificerede tilladelser, og 'falsk', hvis ingen af dem tildeles. Denne metode er praktisk, når du vil give adgang, hvis brugeren har mindst en tilladelse fra et sæt mulige tilladelser.
Yderligere vigtige noter:
- Begge metoder kontrollerer tilladelser, der er tildelt direkte til brugeren såvel som dem, der er arvet fra roller.
- Disse metoder overvejer ikke Laravels gate `før 'tilbagekald eller super-admin bypass-funktionalitet. Til det skal du bruge Laravels 'Can', 'Canany' eller 'Canall' metoder i stedet, som integreres med porte og politikker og understøtter super-admin-logik.
- `HasPermissionTo` er til en enkelt tilladelseskontrol, mens 'HasAndermissionTo' er til kontrol af flere tilladelser, hvor enhver er tilstrækkelig.
I sammendraget skal du bruge `HasPermissionTo`, når du verificerer en tilladelse, og brug` HasanyPermissionTo`, når du vil kontrollere, om en bruger har mindst en tilladelse fra en liste. For super-admin eller mere komplekse autorisationsscenarier foretrækker Laravels indbyggede `kan 'i stedet [1] [2] [5].
Citater:
)
)
[3] https://github.com/spatie/laravel-tarmission/issues/79
[4] https://discuss.flarum.org/d/4817-difference-fween-user-can-and-user-haspermission
)
)
[7] https://www.reddit.com/r/laravel/comments/1e78vct/strategy_for_permission_and_authorization_design/
[8] https://www.honeybadger.io/blog/laravel-tmisss-roles/