Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Gestire le ACL in PHP

  1. #1

    Gestire le ACL in PHP

    ciao!

    stavo cercando un modo per gestire le ACL in PHP.
    come backend userei laravel, e come frontend angular.

    ho trovato questo articolo, che mi sembra interessante come punto di partenza: https://www.developer.com/lang/php/c...cl-in-php.html

    da qui, però, vorrei capire un attimo come gestire il tutto.
    al momento, in mente mi viene questo:
    • al momento del login, verificate username e password, interrogo le tabelle apposite e vado a pescare il gruppo di appartenza e i relativi permessi
    • salvo il tutto in sessione, e spedisco i dati in formato JSON ad angular
    • nelle pagine vado a controllare se l'utente ha i permessi giusti ed agisco di conseguenza; il controllo lo faccio andando a verificare il JSON inviato ad angular


    potrebbe andare?
    altre idee??

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Vuoi creare il tutto da solo per qualche motivo oppure qualcosa di pronto all'uso potrebbe interessarti?
    In caso da un'occhiata a spatie/laravel-permission, anche solo per prendere spunti.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Se lato laravel vuoi usare una api rest sarebbe opportuno che questa non avesse uno stato, quindi non ti consiglierei di usare le sessioni lato backend, fai in modo che non ce ne sia bisogno.

    Per quanto riguarda l'autenticazione non ho ben capito il meccanismo, comunque ti consiglio di utilizzare una autenticazione di tipo Bearer o Jwt, che si sposa bene con una infrastruttura basata su api rest.

    In questo scenario l'autenticazione funziona (semplificando) così:

    - tu invii dal frontend alla api del tuo backend laravel una richiesta con credenziali di accesso (user e password solitamente).

    - lui ti risponde con un json che contiene informazioni sull'utente loggato (se il login è valido) ed un token.

    - lato frontend ti salvi la sessione, come preferisci farlo dipende da te, le opzioni sono più o meno due: cookie e localStorage.

    - nelle successive richieste da parte del frontend userai il token come "password" di accesso.

    - al momento del logout sul frontend cancelli la sessione e volendo puoi anche informare il backend di resettare il token della tua sessione.

    In questo modo laravel sa che il frontend sta richiedendo delle informazioni come un determinato utente, e quindi puoi gestire comodamente i ruoli utente sul backend (con il pacchetto che ti ha indicato Alhazred), se l'utente loggato sul frontend richiede una risorsa per cui non ha i permessi l'api gli risponderà semplicemente con un errore.

    Ho cercato di rendermi il più comprensibile possibile, spero di non averti incasinato di più le idee

    p.s. scusate se sono andato un po' OT

  4. #4
    @Alhazred
    sicuramente mi interessa.
    gli do un'occhiata così vedo se fa al caso mio, o magari prendo "solo" spunto!
    devo capire se va bene poi con quanto detto da M4V1

    @M4V1
    si in generale ho già applicato in un altro ambito, ma li non c'era il discorso dei permessi.
    in questo caso c'è una cosa che mi sfugge.
    io invio username/password, ed in caso affermativo, il server risponde con un json ed un token.
    ma solo con un token come fa a sapere quali permessi o non ho??
    fa tutto da solo quel pacchetto??

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Una volta che l'utente è autenticato ed ha ricevuto il token per il backend è come se fosse loggato.

    Quel token è univoco per l'utente (che ovviamente deve esistere nel backend) e quindi quando ti colleghi utilizzando quel token il backend sa perfettamente chi sei e può darti informazioni in base ai ruoli che hai impostato.

    Però i ruoli dei vari utenti devi impostarli preventivamente tu in qualche modo, puoi farlo manualmente con delle migrazioni o farlo tramite un pannello di amministrazione, quello dipende anche dallo scopo dell'app e da quanto questi ruoli siano o meno fissi.

    Se vuoi gestire il backend tramite interfaccia grafica dai un'occhiata a questo: https://laravelvoyager.com/
    Magari ti può essere utile anche per impostare e gestire i ruoli.

  6. #6
    ok grazie penso di aver capito.

    per quanto riguarda voyager, avevo provato ad installarlo da un'altre parte, ma ricordi di aver avuto un sacco di problemi.
    magari riprovo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.