Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Kaip spatie tvarko vaidmens hierarchiją ir paveldėjimą


Kaip spatie tvarko vaidmens hierarchiją ir paveldėjimą


„Spatie“ „Laravel“ leidimų paketas natūraliai nepalaiko vaidmens hierarchijos ar paveldėjimo iš dėžutės. Tai reiškia, kad jis neturi integruotos funkcijos, kaip apibrėžti tėvų ir vaikų santykius tarp vaidmenų, kai tėvų vaidmuo automatiškai paveldi visus savo vaiko vaidmenų leidimus.

Kaip „Spatie“ tvarko vaidmenis ir leidimus

- Vaidmenys ir leidimai saugomi kaip atskiri duomenų bazėje.
- Leidimai priskiriami tiesiogiai vaidmenims.
- Vartotojams priskiriami vaidmenys, o per tuos vaidmenis jie įgyja susijusių leidimų.
- Taip pat galite priskirti leidimus tiesiogiai vartotojams.
- Tikrinant leidimus, paketas apžvelgia visus leidimus, tiesiogiai priskirtus vartotojui ir tiems, kurie paveldėti per vaidmenis.

Vaidmenų hierarchija ir paveldėjimas

- Paketas vaidina kaip plokščias subjektus be jokios hierarchijos.
- Nėra integruoto mechanizmo, skirto priskirti vieną vaidmenį kitam arba atlikti „tėvų vaidmenį“, kuris automatiškai paveldi visus „vaiko vaidmenų“ leidimus [1] [4].
- Vartotojai gali turėti kelis priskirtus vaidmenis, o tai leidžia lanksčiai derinti leidimus iš skirtingų vaidmenų, o ne pasikliauti hierarchiniu paveldėjimu [2].

Įprasti vaidmens hierarchijos įgyvendinimo su spatie metodai

Kadangi „Spatie“ nepalaiko vaidmens paveldėjimo, kūrėjai dažnai įgyvendina tokius sprendimus kaip:

-Visų leidimų priskyrimas aukštesnio lygio vaidmenims: Užuot paveldėję leidimus iš vaikų vaidmenų, jūs rankiniu būdu priskiriate visus svarbius leidimus kiekvienam vaidmeniui, įskaitant aukštesnio lygio vaidmenis, tokius kaip „Super-Admin“, turintys visus mažesnių vaidmenų leidimus [2] [5].

- Reitingo vaidmenys su sveiko skaičiaus vertėmis: Kai kurie kūrėjai priskiria vaidmenis ar lygį (pvz., 1 vartotojui, 2 moderatoriui, 3 administratoriui) ir tada įgyvendina jų programos logiką, kad suteiktų leidimus pagal vartotojo vaidmens reitingą, veiksmingai imituojant hierarchiją [2].

- Keli vaidmenys vienam vartotojui: priskirkite kelis vaidmenis vartotojams, kuriems reikia kombinuotų leidimų iš skirtingų vaidmenų, išvengdami hierarchinių vaidmenų poreikio [2].

Santrauka

- „Spatie“ paketas sutelktas į vaidmenų ir leidimų valdymą kaip atskirus, plokščius subjektus.
-Tai skatina leisti leidimus tiesiogiai vaidmenims ir vartotojams be paveldėjimo vaidmenims.
- Vaidmenų hierarchija ir paveldėjimas, jei reikia, turi būti įgyvendinami rankiniu būdu, paprastai, aiškiai priskiriant leidimus arba naudojant pasirinktinį reitingo logiką.
- Šis dizainas išvengia galimų problemų, kai tėvų vaidmens leidimai priklauso nuo vaikų vaidmenų, kurie gali sukelti saugumo ar valdymo sudėtingumą [1] [2] [4].

Taigi, nors „Spatie“ suteikia tvirtą ir lanksčią leidimų sistemą, ji nesigilina į vaidmenų hierarchiją ir paveldėjimą iš vidaus; Kūrėjai privalo sukurti savo strategijas, kad prireikus imituotų tokį elgesį.

Citatos:
[1] https://github.com/spatie/laravel-permission/issues/685
[2] https://www.reddit.com/r/laravel/comments/jrhkc9/Stringling_to_create_hierarchy_of_permissions_in/
[3] https://patie.be/docs/laravel-permission/v6/introduction
[4] https://stackoverflow.com/questions/67520321/how-to-implement-hierarchical-rbac-in-laravel
[5] https://www.interserver.net/tips/kb/how-to-implement-role-cart-access-control-in-laravel/
[6] https://www.reddit.com/r/laravel/comment
[7] https://www.youtube.com/watch?v=3HSBJCVWH78
[8] https://spatie.be/docs/laravel-permission/v6/basic-usage/role-permissions
[9] https://stackoverflow.com/questions/78213905/hierarchicales-for-a-user-with-child-cold-having-different-permissions-on
[10] https://stackoverflow.com/questions/75772209/spatie-role-plugin-for-laravel-seed-sers-with-coles-doesnt-asigrole
[11] https://dev.to/varzoeaa/spatie-permissions-vs-laravel-policies-and-gates Handling-role-access-1bdn