【发布时间】:2011-06-05 00:15:19
【问题描述】:
我正在尝试使用Play Framework 在 Scala 中构建一个 Web 应用程序。在 Java 中使用 Play Framework 时,我可以使用 Secure module 对需要登录的页面进行身份验证。这是许多 Web 应用程序中的常见问题,我想为我的 Web 应用程序使用通用解决方案。
我尝试在 Mixing controllers using Traits 之后使用 Secure trait 示例,但我的 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
}
然后我在一个简单的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){
}
关于如何解决这个问题的任何建议?
更新
在按照 Felipe 的建议添加 def 之后。我收到另一个错误not found: value User on:
case Some(username) => renderArgs += "user" -> ↓User(username)
【问题讨论】:
-
这段代码从何而来?上面提供的两个链接都已失效,我还没有在 Play for Scala 中找到任何关于 Security 模块的文档(我只找到了 Java 的那个)。注意:我使用的是 Play 2.1。
标签: authentication scala controller playframework traits