gpt4 book ai didi

authentication - 如何在 Play 框架中使用 Scala Secure Trait?

转载 作者:行者123 更新时间:2023-12-04 18:50:54 24 4
gpt4 key购买 nike

我正在尝试使用 Play Framework 在 Scala 中构建一个 Web 应用程序.在 Java 中使用 Play 框架时,我可以使用 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 中使用 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){

}

关于如何解决这个问题的任何建议?

更新

添加后 def正如 Felipe 所建议的那样。我收到另一个错误 not found: value User在:
case Some(username) => renderArgs += "user" -> ↓User(username)

最佳答案

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

@Before def checkSecurity = {

应该解决这个问题。

关于authentication - 如何在 Play 框架中使用 Scala Secure Trait?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com