Estoy intentando crear una aplicación web en Scala usando Play Framework. Al usar Play Framework en Java, puedo usar el Secure module para realizar la autenticación de páginas que requieren inicios de sesión. Este es un problema común en muchas aplicaciones web, y me gustaría usar una solución general para mi aplicación web.¿Cómo usar Scala Secure Trait en PlayFramework?
He intentado seguir Mixing controllers using Traits con un ejemplo de rasgo seguro, pero mi rasgo ni siquiera compila, y no entiendo lo que está mal.
he creado el rasgo del ejemplo y guardado en 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
}
Luego uso el rasgo segura en un sencillo mysite\app\MySecretController.scala
:
package controllers
import play._
import play.mvc._
object MySecretController extends Controller with Secure {
def index = <h1>Hello</h1>
}
Pero cuando se visita la página de recibo Error de compilación:
The file /app/Secure.scala could not be compiled. Error raised is : expected
start of definition
en esta línea:
@Before ↓checkSecurity = {
También he creado una clase simple mysite/app/User
:
package controllers
class User (name: String){
}
Cualquier sugerencia sobre cómo puedo solucionar esto?
ACTUALIZACIÓN
Después de añadir def
según lo sugerido por Felipe. Me sale otro error not found: value User
en:
case Some(username) => renderArgs += "user" -> ↓User(username)
¿De dónde viene este código? ambos enlaces provistos arriba están muertos y no he encontrado ninguna documentación en el módulo de Seguridad en Play for Scala (solo encontré el de Java). Nota: estoy usando Play 2.1. –