Доступ к User.currentUser из Boot.scala onAboutToShutdownSession - PullRequest
0 голосов
/ 11 августа 2011

Я сейчас работаю над проектом интернет-магазина в Lift. По причинам удобства каждому пользователю, посещающему магазин, назначается постоянная запись ProtoUser в Mapper. Эта запись помечена как временная. Теперь я должен удалить запись DB по завершении сеанса, используя onAboutToShutdownSession

Очевидно, что у меня нет доступа к User.currentUser, так как я вне сеанса. (?) У меня все еще есть ссылка LiftSession в моей функции.

Вопрос: как я могу получить доступ к SessionVar currentUser (или даже currentUserId) из контекста LiftSession или Boot.scala

Спасибо за ваши ответы!

Andreas

1 Ответ

1 голос
/ 18 августа 2011

Вы не можете получить доступ к SessionVar вне сеанса.

Если вы создали функцию во время обслуживания запроса, вы можете сделать что-то вроде:

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

Потому чтоid val фиксируется в рамках запроса, а f закрывается за пределами области действия, будет зафиксировано значение User.currentUserId и функция сможет удалить пользователя из базы данных.

...