Я использую Drupal 8.6 (как безголовую CMS), похоже, что выход из системы можно выполнить, отправив сообщение на
http://domain/user/logout?_format=json&token=logout_token
, где logout_token - это значение, возвращенное предыдущим логином(пример ниже)
{
"current_user": {
"uid": "65",
"name": "FooBar"
},
"csrf_token": "WDwkGWulI1qBkwDuHtZX8Hakl4X2T7kKIm5kG5StWng",
"logout_token": "l_6TO3cYldLtOx870LI0cYNUwi0wPNSneUA4eZXcZQk"
}
Когда я вызываю службу входа в систему, я не передаю никакое значение csrf (согласно приведенному ниже коду), и оно отлично работает
function login () {
var url = host + "user/login?_format=" + format;
var data = {
"name": "FooBar",
"pass": "secretSauce"
}
fetch(url, {
method: 'POST',
body: JSON.stringify(data),
headers:{
'Content-Type': contentType
}
})
.then(data => data.json())
.then(response => {
console.log('Success response: ', JSON.stringify(response));
if (typeof(Storage) !== "undefined") {
localStorage.setItem("csrf_token", response.csrf_token);
localStorage.setItem("logout_token", response.logout_token);
} else {
console.log('Sorry! No Web Storage support...')
}
})
.catch(error => console.error('Error response: ', error));
}
Когда я использую тот же токен для выхода из системы (я пробовал почти все), он не работает из моего fe (js call), но работает на Postman, передающем те же данные.Ошибка, которую я получаю в моем извлечении:
message: "'csrf_token' URL query argument is invalid."
Я установил свой пользовательский ресурс отдыха следующим образом
/user/{user}: GET, PATCH, DELETE
/entity/user: POST
methods: GET, POST, DELETE, PATCH
formats: json
authentication: cookie
Кто-нибудь решил эту проблему?