Ошибка «Вы должны войти в систему» ​​в WS Play Framework (scala) - PullRequest
1 голос
/ 25 февраля 2020

Я получаю сообщение об ошибке:

{"error":"You must be logged in to complete this action"} 
{"error":"You must be logged in to complete this action"}

, хотя, предположительно, я уже аутентифицировался, как видно из кода ниже. Мой код выглядит так:

val baseURL = “https://www.dummywebsitename.org”
val authenticationPath = “/ajaxauth/login”
val queryPath = “/basicdomaindata/query/class/tle/ABC/CDE”
val loginURL = baseURL+authenticationPath
val queryURL = baseURL+queryPath

Ниже я создаю повар ie, затем выполняю запрос с аутентификацией и, наконец, пытаюсь получить данные из удаленного сервиса RESTful.

val cookie = DefaultWSCookie("cookieName", "cookieValue", None, None, Some((2*60*60).toLong), true, true)

val wsRequest = ws.url(loginURL).withAuth(userName, password, WSAuthScheme.BASIC).addCookies(cookie).get()

val wsDataRequest = ws.url(queryURL).post(file)

Когда я запускаю код, я получаю вышеуказанную ошибку.

1 Ответ

0 голосов
/ 25 февраля 2020

Не уверен насчет этого, но вам, вероятно, следует использовать файлы cookie непосредственно из wsRequest, используя метод WSResponse.cookies .

//Not tested. Don't have prepared env :(
val reqLogin = ws.url(loginURL)
  .withAuth(userName, password, WSAuthScheme.BASIC)
  .addCookies(cookie)
  .get()

val wsDataRequest = reqLogin
.filter(_.status == 200)
.flatMap { loginRes => 
//even if we are in Success() branch of Future here, it doesn't mean
//request was made well. It means only we have touched server successfully.
//We still need to check if login was success and so on.
// to see what login result relly is println or check below values:
//loginRes.statusText 
//loginRes.status 
//loginRes.body

  ws.url(queryURL)
    .withCookies(loginRes.cookies :_*)
    .post(file)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...