Я действительно сбит с толку, так как больше не могу писать в свою базу данных (используя игру 2.6 с реактивным монгом 0.16.5) - столкнулся с 403 forbidden
.Недавно я обновил реактивную программу MONGO, но сразу после этого (во время тестирования записи) проблем не возникло, поэтому чувствую, что это вызвано в другом месте.Предупреждение указывает на проблему csrf:
[warn] p.filters.CSRF - [CSRF] Проверка завершилась неудачно, так как запрос application / json
application.conf (как задокументировано здесь )
csrf {
play.filters.enabled += "play.filters.csrf.CSRFFilter"
}
Мой фильтр не изменился по сравнению с сеяной версией, которую я использовал (когда это работало):
@Singleton
class ExampleFilter @Inject()(implicit ec: ExecutionContext) extends EssentialFilter {
override def apply(next: EssentialAction) = EssentialAction { request =>
next(request).map { result =>
result.withHeaders("X-ExampleFilter" -> "foo")
}
}
}
Действие, которое вызывается (опять же - не было изменено)
def updateById(collName: String, id: BSONObjectID) = Action.async(parse.json) { implicit request: Request[JsValue] =>
val oDocJso = request.body.asOpt[JsObject]
val oQueryJso = Some(Json.obj("_id" -> id))
val oCommandValueAndIsTrueValueTup = request.getQueryString("exists").map(x => (x, "y")) // $exists option
val qJso = addToSelector(writeFieldsExistQuery)(oQueryJso, oDocJso)(commandIsDefault = true, oCommandValueAndIsTrueValueTup)
oDocJso.map(docJso => mongoRepo.updateOne(collName: String)(qJso, docJso)().map(result => rs.writeResultStatus(result))).getOrElse(Future(Ok("no object to write")))
}
Я использую собственный API-интерфейс для выполнения вызовов веб-службы (снова работает раньше).Я не хочу отключать csrf
.Похоже, это должно быть что-то простое, но я не могу найти ничего, что помогло.Я так потрошен прямо сейчас.