Я пытаюсь создать веб-приложение на Scala, используя Play Framework . При использовании Play Framework на Java я могу использовать модуль Secure для аутентификации страниц, требующих входа в систему. Это обычная проблема во многих веб-приложениях, и я хотел бы использовать общее решение для своего веб-приложения.
Я пытался следовать Смешивание контроллеров с использованием свойств с примером свойства Secure, но мои trait даже не компилируется, и я не понимаю, что не так.
Я создал трейт из примера и сохранил его на 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
}
Затем я используйте трейт Secure в простом mysite \ app \ MySecretController.scala
:
package controllers
import play._
import play.mvc._
object MySecretController extends Controller with Secure {
def index = Hello
}
Но при посещении страницы я получаю ошибку компиляции:
The file /app/Secure.scala could not be compiled. Error raised is : expected
start of definition
в этой строке:
@Before ↓checkSecurity = {
Я также создал простой mysite / app / User
class:
package controllers
class User (name: String){
}
Есть предложения, как я могу решить эту проблему?
ОБНОВЛЕНИЕ
После добавления def
, как было предложено Фелипе. Я получаю еще одну ошибку not found: значение User
on:
case Some(username) => renderArgs += "user" -> ↓User(username)