我正在尝试使用Play Framework在Scala中构建一个Web应用程序。在Java中使用Play Framework时,我可以使用Secure module为需要登录的页面执行身份验证。这是许多Web应用程序中的常见问题,我想为我的Web应用程序使用通用解决方案。如何在PlayFramework中使用Scala Secure Trait?
我试图按照Mixing controllers using Traits的安全特性的例子,但我的特质甚至没有编译,我不明白什么是错的。
我从示例中创建的特质,并将其保存在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
}
然后我使用安全性状的简单mysite\app\MySecretController.scala
:
package controllers
import play._
import play.mvc._
object MySecretController extends Controller with Secure {
def index = <h1>Hello</h1>
}
但访问网页,我得到的时候编辑错误:
The file /app/Secure.scala could not be compiled. Error raised is : expected
start of definition
对此生产线:
@Before ↓checkSecurity = {
我还创建了一个简单mysite/app/User
类:
package controllers
class User (name: String){
}
我如何能解决这个问题的任何建议?
UPDATE
加入def
由菲利普的建议之后。我得到另一个错误not found: value User
:
case Some(username) => renderArgs += "user" -> ↓User(username)
此代码来自哪里?上面提供的两个链接都没有了,我还没有在Play for Scala的安全模块中找到任何文档(我只找到了一个用于Java的文档)。注意:我正在使用Play 2.1。 – 2013-02-11 23:48:44