PHP MVC come accedere all'utente corrente?

1

Qual è il modo migliore per sapere se un utente ha già effettuato l'accesso quando accede alla pagina? Ho visto molte persone parlare di un servizio Recognition che convaliderà un utente che sta tentando di accedere, ma che dire del controllo se hanno già effettuato l'accesso? Supponendo che sto memorizzando lo stato dell'utente nella sessione, come posso verificarlo? La mia applicazione richiede anche una whitelist. Inoltre, devo reindirizzare l'utente a una pagina 403 se non sono nella whitelist, a differenza della pagina di accesso o di qualsiasi pagina richiesta se sono connessi.

I miei roadblock principali sono:

  • Dove implementare la logica della whitelist? Router, oggetto dominio?
  • Verifica se l'utente ha effettuato l'accesso? Controllore?
  • Come ottenere il ruolo dell'utente corrente se sono loggati per il mio ACL? Devo chiamare il servizio Recognition nel mio index.php e il mio servizio Recognition restituire l'utente o il suo ruolo e trasmetterlo alla acl per il controller da utilizzare?

Nota: non mi piace molto il Controller Decorator perché se l'utente non può accedere al metodo nel controller, come e dove viene gestito?

    
posta GreeKatrina 18.05.2015 - 22:10
fonte

2 risposte

2

Molto probabilmente, il tuo MVC include già una variabile accessibile all'interno del controller per accedere alle informazioni dell'utente. Se si archiviano ruoli utente nel database, è possibile limitare l'accesso a determinate aree del sito nel router in base al ruolo o in base alla classe classe per controllore pagina per pagina / controllore. La whitelist dovrebbe probabilmente accadere nel front controller o nel file bootstrap.

    
risposta data 18.06.2015 - 09:46
fonte
1

Utilizzando PHP accederai al SessionToken cookie dell'utente corrente memorizzato quando hai autenticato l'utente per verificare se :

  1. Ne esiste uno
  2. Non ha superato la scadenza
  3. È il token corrente per quell'utente memorizzato in un database di sessione

Lo implementerei scrivendo il codice in un file / modulo separato e includendolo in ogni pagina del progetto o controller principale. Esegui la logica appropriata sul controllo di questi dettagli.

Tutti gli utenti devono essere memorizzati da qualche parte, la posizione ideale è su un database di qualche tipo che memorizzerà se possono essere registrati (lista bianca / lista nera), i loro dettagli e il loro sessionID.

    
risposta data 19.05.2015 - 03:14
fonte

Leggi altre domande sui tag