Ce solutie de autorizare folositi in php

Continuing the discussion from PHP vs alte limbaje:

Nu ma refer la autenfiticare, ci la autorizare si de preferat una row-level.

Exemplu,apache shiro (Java)

//get the current Subject
Subject currentUser =
    SecurityUtils.getSubject();

if (currentUser.hasRole(“administrator”)) {
    //show a special button‏
} else {
    //don’t show the button?)‏
}

Symfony Security Component: Authorization functioneaza exact ca exemplul tau din Java (and then some).

Am caut mult ceva care sa faca autorizare row level dar nu am gasit ceva potrivit: pe mine ma interesa inainte sa fie facut query-ul, pana la urma am folosit un filtru de Doctrine ca workaround. Exista totusi Voters care pot face o gramada de chestii misto.

Folosesc ZF2\Permissions\ACL. Am incercat si RBAC, dar nu mi-a placut pentru ca implementarea avea o logica cam inversa (parintii mosteneau permisiunile copiilor). Nu stiu daca asta este comportamentul normal al modelului, dar in ZF 2.1, asa se comporta.
Tot pentru ZF2, o fatada destul de interesanta pentru ACL este BjyAuthorize.
La nivel de rand, chiar nu am incercat sa gasesc o solutie de autorizare, pentru ca n-am avut nevoie de asa ceva.

Eu in proiectele noastre de la firma facute in laravel am implementat Zend ACL.

Fie ca folositi RBAC sau ACL cum tratati problema pemisiunilor pe obiecte sau categorii de obiecte (domenii). Exemple:

  • sa pot edita si printa articolele mele, sa pot printa pe ale altuia , dar sa nu le pot sterge
  • sa pot adauga si publica articole in categoria “Latest” dar sa nu pot publica in categorie “Comunicate”

FIx pentru asta sunt Voters in libraria de autorizare din Symfony2. Sunt convins ca exista ceva similar si in ZF2.

1 Like

Fix de astea se ocupa librariile acestea.

$permission = (object)['type' => 'allow', 'resource' => 'Post32', 'role' => 'vizitator'];

Acl::{$permission->type}($permission->role, $permission->resource, $permission->privilege);

Ai privilegiul de a vedea resursa Post32 in rolul de vizitator.

1 Like

Eu am folosit asta intr-un proiect mai maricel.

1 Like