Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kuo skiriasi „HaspermissionTo“ ir „HasanyPermissionTo“


Kuo skiriasi „HaspermissionTo“ ir „HasanyPermissionTo“


Skirtumas tarp „haspermissionTo“ ir „hasanyPermissionTo“, atsižvelgiant į „Spatie Laravel“ leidimų paketą, yra tai, kaip jie tikrina vartotojo leidimus:

- „HaspermissionTO“ patikrina, ar vartotojas turi konkretų vieną leidimą. Tai grąžina „tiesa“, jei vartotojas turi tą tikslų leidimą, tiesiogiai priskirtą arba paveldėtą per vaidmenis, o kitaip - „klaidinga“. Šiam metodui galite perduoti leidimo pavadinimą, ID arba leidimo objektą. Tai naudinga, kai norite patikrinti vieną konkretų leidimą vartotojui.

- „HasanyPers“ patikrina, ar vartotojas turi * bet kurį * vieną iš kelių leidimų, perduotų kaip masyvas ar sąrašas. Tai grąžina „tiesa“, jei vartotojas turi bent vieną iš nurodytų leidimų, ir „klaidinga“, jei nė vienas iš jų nėra priskiriamas. Šis metodas yra patogus, kai norite leisti prieigą, jei vartotojas turi bent vieną leidimą iš galimų leidimų rinkinio.

Papildomos svarbios pastabos:

- Abu metodai Patikrinkite leidimus, priskirtus tiesiogiai vartotojui, taip pat tie, kurie paveldėti iš vaidmenų.

- Šie metodai neatsižvelgia į „Laravel“ vartus prieš „atšaukimus“ ar „Super-Admin“ aplinkkelio funkcionalumas. Tam turėtumėte naudoti „Laravel“ „Can“, „Canany“ arba „Canall“ metodus, kurie integruoja su vartais ir politika bei palaiko super admin logiką.

- „HaspermissionTo“ yra skirtas tikrinant vieną leidimą, o „HasanyPermissionTo“ yra skirtas tikrinti kelis leidimus, kur pakanka.

Apibendrinant, patikrinkite vieną leidimą ir naudokite „haspermissionTo“ ir naudokite „hasanyPermissionTo“, kai norite patikrinti, ar vartotojas turi bent vieną leidimą iš sąrašo. Super-adminų ar sudėtingesnių autorizacijos scenarijų teikia pirmenybę „Laravel“ įmontuoti „Can“ metodai [1] [2] [5].

Citatos:
[1] https://patie.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-permissions
[6] https://dev.to/nicolasmontelelf/add-permissions-and-troles-tour-laravel-project-2HHL
[7] https://www.reddit.com/r/laravel/comment
[8] https://www.honeybadger.io/blog/laravel-permissions cours/