Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ποια είναι η διαφορά μεταξύ του haspermissionto και του hasanypermissionto


Ποια είναι η διαφορά μεταξύ του haspermissionto και του hasanypermissionto


Η διαφορά μεταξύ του `haspermissionto 'και του` hasanypermissionto' στο πλαίσιο του πακέτου άδειας spatie laravel έγκειται στο πώς ελέγχουν τα δικαιώματα των χρηστών:

- haspermissionto ελέγχει εάν ένας χρήστης έχει μια συγκεκριμένη άδεια. Επιστρέφει `true` αν ο χρήστης έχει αυτή την ακριβή άδεια, είτε απευθείας εκχωρημένη είτε κληρονομική μέσω ρόλων, και` ψευδές 'αλλιώς. Μπορείτε να μεταβιβάσετε το όνομα, το αναγνωριστικό ή το αντικείμενο άδειας σε αυτήν τη μέθοδο. Είναι χρήσιμο όταν θέλετε να επαληθεύσετε μια συγκεκριμένη άδεια για έναν χρήστη.

- HasAnyPermissionTo ελέγχει εάν ένας χρήστης έχει * οποιοδήποτε * ένα από τα πολλαπλά δικαιώματα που πέρασε ως πίνακας ή λίστα. Επιστρέφει `true` εάν ο χρήστης έχει τουλάχιστον ένα από τα καθορισμένα δικαιώματα και` ψευδές` εάν δεν έχει ανατεθεί κανένα από αυτά. Αυτή η μέθοδος είναι βολική όταν θέλετε να επιτρέψετε την πρόσβαση εάν ο χρήστης έχει τουλάχιστον μία άδεια από ένα σύνολο πιθανών δικαιωμάτων.

Πρόσθετες σημαντικές σημειώσεις:

- Και οι δύο μέθοδοι ελέγχουν τα δικαιώματα που έχουν αντιστοιχιστεί απευθείας στον χρήστη καθώς και σε εκείνες που κληρονομούνται από τους ρόλους.

- Αυτές οι μέθοδοι δεν θεωρούν την πύλη του Laravel `πριν από τις επανάκλησες ή τις λειτουργίες παράκαμψης super-admin. Για αυτό, θα πρέπει να χρησιμοποιήσετε το Laravel's `Can` '," Canany`, ή "Canall` μεθόδους αντ' αυτού, οι οποίες ενσωματώνονται με πύλες και πολιτικές και να υποστηρίξουν τη λογική Super-Admin.

- `haspermissionto 'είναι για έναν έλεγχο άδειας, ενώ το` hasanypermissionto' είναι για τον έλεγχο πολλαπλών δικαιωμάτων όπου κάποιος αρκεί.

Συνοπτικά, χρησιμοποιήστε το `haspermissionto 'κατά την επαλήθευση μιας άδειας και χρησιμοποιήστε το` hasanypermissionto' όταν θέλετε να ελέγξετε αν ένας χρήστης έχει τουλάχιστον μία άδεια από μια λίστα. Για τα σούπερ-admin ή πιο πολύπλοκα σενάρια εξουσιοδότησης, προτιμούν τις ενσωματωμένες μεθόδους του Laravel αντ 'αυτού [1] [2] [5].

Αναφορές:
[1] https://spatie.be/docs/laravel-permission/v6/basic-usage/direct-permissions
[2] https://stackoverflow.com/questions/58093970/spatie-laravel-permissions-gate-and-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-permissionsion
[6] https://dev.to/nicolasmontielf/add-permissions-and-roles-to-your-laravel-project-2hhl
[7] https://www.reddit.com/r/laravel/comments/1e78vct/strategy_for_permission_and_authorisation_design/
[8] https://www.honeybadger.io/blog/laravel-permissions-roles/