Как использовать Scala Secure Trait в PlayFramework?

Я пытаюсь создать веб-приложение на 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)

5
задан Jonas 2 June 2011 в 18:31
поделиться