![](/img/trans.png)
[英]How to implement Secure.Authenticator in scala Controller?
[英]How to use a Scala Secure Trait in PlayFramework?
我正在嘗試使用Play Framework在 Scala 中構建 web 應用程序。 在 Java 中使用 Play Framework 時,我可以使用Secure 模塊對需要登錄的頁面進行身份驗證。 這是許多 web 應用程序中的常見問題,我想為我的 web 應用程序使用通用解決方案。
我嘗試使用帶有安全特征示例的特征來跟蹤混合控制器,但我的特征甚至沒有編譯,我不明白出了什么問題。
我從示例中創建了特征並將其保存在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
中使用 Secure trait:
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
class:
package controllers
class User (name: String){
}
關於如何解決這個問題的任何建議?
更新
在按照 Felipe 的建議添加def
之后。 我得到另一個錯誤not found: value User
:
case Some(username) => renderArgs += "user" -> ↓User(username)
在定義方法之前必須使用關鍵字 def。
@Before def checkSecurity = {
應該解決這個問題。
您可能會收到“未找到:值用戶”錯誤,因為未找到其定義。 您需要確保導入 package。 做就是了:
import models._
后
import play.mvc._
導入所有模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.