我正在嘗試使用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