Я хотел бы иметь доступ к текущему пользователю где-то глубоко в моих моделях моего приложения Play, для таких вещей, как установка автора, проверка того, что пользователь действительно может сохранить этот тип и т. д.
В идеале я хотел бы использовать @RequestScoped
Guice для внедрения одного и того же UserIdentity
в мой запрос везде, где мне это нужно. Однако, насколько я могу судить, Play! Framework поддерживает только @Singleton
и без области видимости. Таким образом, либо мы получим один и тот же UserIdentity
для разных запросов, либо разные для каждой запрашиваемой модели/утилиты. И то, и другое не подходит по понятным причинам.
Есть ли способ использовать это поведение в Play 2.5?
Другие способы, которые я пробовал
Я пытался использовать комбинацию сеанса Play и кеша. Но проблема в том, что сеанс неизменяем, поэтому я не могу ничего добавить к нему для повторного использования в том же запросе.
Я просмотрел множество фреймворков аутентификации, но все они, похоже, сосредоточены на защите действий, а не на предоставлении мне текущего объекта пользователя.