Sto provando a creare un'applicazione Web in Scala utilizzando Play Framework. Quando si utilizza Play Framework in Java, è possibile utilizzare lo Secure module per eseguire l'autenticazione per le pagine che richiedono l'accesso. Questo è un problema comune in molte applicazioni Web e mi piacerebbe utilizzare una soluzione generale per la mia applicazione web.Come utilizzare un tratto sicuro Scala in PlayFramework?
Ho provato a seguire Mixing controllers using Traits con un esempio di tratto sicuro, ma il mio tratto non è nemmeno compilato, e non capisco cosa c'è che non va.
ho creato il tratto dall'esempio e salvato su mysite\app\Secure.scala
:
package controllers
import play._
import play.mvc._
trait Secure {
self:Controller =>
@Before checkSecurity = {
session("username") match {
case Some(username) => renderArgs += "user" -> User(username)
Continue
case None => Action(Authentication.login)
}
}
def connectedUser = renderArgs("user").get
}
allora io uso il tratto sicura in un semplice mysite\app\MySecretController.scala
:
package controllers
import play._
import play.mvc._
object MySecretController extends Controller with Secure {
def index = <h1>Hello</h1>
}
Ma quando si visita la pagina ottengo Errore di compilazione:
The file /app/Secure.scala could not be compiled. Error raised is : expected
start of definition
su questa linea:
@Before ↓checkSecurity = {
Ho anche creato una semplice mysite/app/User
classe:
package controllers
class User (name: String){
}
Qualsiasi suggerimento su come posso risolvere questo problema?
UPDATE
Dopo aver aggiunto def
come suggerito da Felipe. Ottengo un altro errore not found: value User
on:
case Some(username) => renderArgs += "user" -> ↓User(username)
Da dove viene questo codice? entrambi i link sopra riportati sono morti e non ho trovato alcuna documentazione sul modulo Security in Play per Scala (ne ho trovato solo uno per Java). Nota: sto usando Play 2.1. –