![](/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.