Codice di strutturazione per gestire l'autenticazione

0

Sto sviluppando un codice che sarà responsabile della creazione di nuovi utenti e della modifica di quelli esistenti tramite un'API in un sistema di gestione degli utenti. Ho sviluppato la classe di autenticazione, che gestisce l'autenticazione dell'utente API tramite nome utente / password e restituisce un cookie che viene memorizzato come proprietà nell'oggetto di autenticazione.

Il cookie deve essere inviato insieme a qualsiasi chiamata API, ma non sono sicuro dell'approccio migliore per strutturarlo.

Inserisco l'oggetto di autenticazione nelle varie classi utente responsabili della modifica e della creazione di utenti affinché possano chiamare il metodo Authentication- > getCookie (); oppure, è meglio per ogni classe User istanziare l'oggetto Autenticazione e chiamare i metodi per autenticare e restituire il cookie; o c'è un metodo migliore.

    
posta user308643 21.06.2018 - 12:45
fonte

1 risposta

1

Cookie utilizzati per gestire l'astrazione Sessione , non gli oggetti Utente . Puoi memorizzare l'oggetto Utente nella Sessione . PHP ha una buona gestione delle sessioni e molte librerie di gestione delle sessioni, non dovresti scrivere le tue. Uso il componente http_foundation di symfony per la gestione delle sessioni nei miei progetti.

link link

Ogni utente può avere più sessioni da dispositivi diversi con le stesse credenziali. Uso molte relazioni diverse per memorizzarle nel database (molte sessioni a un utente ). Inoltre, è necessario utilizzare i cookie casuali per impedire lo spoofing dei cookie, PHP può gestire anche questa parte.

Best practice: utilizzare le librerie guidate dalla comunità basate su funzioni integrate con algoritmi di protezione avanzati.

La classe di autenticazione dovrebbe essere service (o factory) per gestire Sessions e un'altra classe (Controller) per gestire gli utenti. Dovresti separare strongmente queste funzioni per una buona architettura. Nei miei progetti utilizzo le classi SessionManager , UserRepository e UserController per la gestione degli utenti di base.

Ulteriori letture: RBAC / ACL . Buona fortuna!

    
risposta data 25.06.2018 - 05:00
fonte

Leggi altre domande sui tag