从Boot.scala onAboutToShutdownSession访问User.currentUser

时间:2011-08-11 08:08:08

标签: lift

我现在正在Lift的电子商店项目中工作。为方便起见,每个访问该商店的用户都在Mapper中分配了一个持久的ProtoUser条目。此条目标记为临时。 我现在必须使用onAboutToShutdownSession

删除会话终止时的DB条目

显然我没有访问User.currentUser,因为我在会话之外。 (?)我的函数中仍然有LiftSession Reference。

问题是:如何从LiftSession或Boot.scala的上下文中访问currentUser(甚至currentUserId)SessionVar

感谢您的回答!

安德烈亚斯

1 个答案:

答案 0 :(得分:1)

您无法在会话外访问SessionVar。

如果您在处理请求期间构建了一个函数,则可以执行以下操作:

val id = User.currentUserId.get
val f: () => Unit = () => {
   id.foreach{realId => deleteFromDatabase(realId)
}

因为在请求范围内捕获了id值并且f关闭了范围,所以将捕获User.currentUserId的值,并且该函数将能够从数据库中删除该用户。