【问题标题】:How to use a Scala Secure Trait in PlayFramework?如何在 PlayFramework 中使用 Scala 安全特性?
【发布时间】: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


【解决方案1】:

在定义方法之前必须使用关键字def。

@Before def checkSecurity = {

应该解决这个问题。

【讨论】:

  • 啊,谢谢。这解决了这个错误,但我得到了另一个关于 value User 的信息。我创建了一个类User,但我不知道该怎么做而且它不起作用。有什么建议么?查看我的更新。
  • 您可能没有用户类?或者您可能没有将其声明为案例类,因此您没有尝试调用的 User 对象伴侣的 User.apply() 方法。
【解决方案2】:

您可能会收到“未找到:值用户”错误,因为未找到其定义。您需要确保导入包。做吧:

import models._

之后

import play.mvc._

导入所有模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2014-11-30
    • 2020-03-23
    相关资源
    最近更新 更多