2014-10-09 13 views
6

I ruoli utente: user, manager, admin. Ho bisogno di autenticarli nei controller (metodi). Per esempio solo admin Possiamo cancellare (ora sembra che questo, hanno bisogno di cambiare che solo amministratore deve avere l'autorizzazione):Play framework, Scala: autenticate Utente per ruolo

def deleteBook(id: Int) = DBAction { 
    findById(id) match { 
     case Some(entity) => { 
      books.filter(_.id === id).delete 
      Ok("") 
     } 
     case None => Ok("") 
    } 
} 

ho molti controllori e metodi. Ho bisogno di autenticarsi prima della richiesta di processo (ad esempio eliminazione del libro). Il mio file routes contiene:

... 
DELETE  /books/:id     @controllers.Book.deleteBook(id: Int) 
... 

Alcuni itinerari sono accessibili solo per admin e manager. Alcuni sono per tutti i tipi di utenti.

Attualmente sto vedendo il modulo di autorizzazione deadbolt2scala per giocare.

Potete consigliare il modo migliore per autenticare gli utenti multiruolo in scala di gioco?

risposta

1

Sono riuscito a farlo utilizzando StackableControllers fornito da https://github.com/t2v/stackable-controller Fondamentalmente, io uso un elenco di controllo di accesso di base fornito dal mio application.conf. Comincio controllando se c'è un utente nella mia richiesta. Se ce n'è uno, posso verificare se ha diritti di accesso sufficienti per eseguire l'azione.

Tale funzionalità può essere implementata anche utilizzando la composizione BodyParser. Non l'ho mai fatto, però, quindi il consiglio di qualcun altro potrebbe essere migliore per te.

Problemi correlati