【发布时间】:2015-02-11 23:45:57
【问题描述】:
所以,基本上我想用播放框架做的是:
- 检查用户是否登录了cookie
- 如果用户已登录 cookie,则从数据库中获取记录
代码:
def allSamplesJson = Action { implicit request =>
request.session.get("l").map { value =>
value match {
case "i" => DBAction { conn =>
implicit val dbs = conn.dbSession
val all = models.CodeSampleTable.allSamples()
Ok(Json.toJson(all))
}
case _ => Unauthorized(unautStr)
}
}.getOrElse {
Unauthorized(unautStr)
}
}
基本上,如果用户无权获取 json 记录,我什至不想触摸数据库/打开连接等。上面的代码不起作用(无法编译)。我该如何做到这一点?
这是错误:
【问题讨论】:
-
不起作用是什么意思?未经授权的用户可以访问吗?授权用户无权访问?抛开问题不谈,我会考虑使用已建立的身份验证系统:stackoverflow.com/questions/24140660/…
-
我的意思是它不能编译。我只是想这样做,如果用户没有 cookie,他就不会从数据库中获取 json 记录,所以,如果是这种情况,我想完全避免 DB 连接。问题不是“它在语义上不起作用”,问题是它无法编译。我想在简单的 Action 中使用 DBAction
-
什么是编译错误?
-
@m-z 添加截图到帖子。
-
@VanillaFace 如果您使用的是 Slick,为什么不直接使用 DB wrapper 来获取会话?尝试时无需嵌套操作(由于匹配的一个分支返回
Action[AnyContent]和另一个Result,因此无法编译。)
标签: scala playframework