Как начать разработку выхода с AJAX - PullRequest
0 голосов
/ 29 октября 2019

Я хочу использовать Sweetalert2 для инициирования выхода из системы / выхода из системы, но приведенный ниже код генерирует неверную ошибку токена CSRF в рельсах.

Приведенный ниже код инициирует УДАЛИТЬ HTTP-запрос для выхода из устройства. URL, но это когда ошибка CSRF возникает и не выходит из системы. Обратите внимание на тег ERB для destroy_user_session_path. Это выдает ту же ошибку, если я жестко закодирую ссылку на страницу выхода из системы.

Любая помощь в том, как это сделать, будет принята с благодарностью.

function logoutSwal() {
    Swal.fire({
    title: 'Ready to Leave?',
    text: "Select 'Logout' below if you are ready to end your current session.",
    type: 'question',
    showCancelButton: true,
    confirmButtonColor: '#3085d6',
    confirmButtonText: 'Logout'
    }).then((result) => {
        if (result.value) {
            fetch('<%= destroy_user_session_path %>', {
                method: 'DELETE'
            }
        }
    })
}

ОБНОВЛЕНИЕ

Следующая функция теперь частично работает, она правильно выходит из системы (удаляет сеанс), но не перенаправляет на страницу входа. Если я обновлю страницу (CTRL-R), я попаду на страницу входа. Я подозреваю, что проблема теперь связана с контроллером devise и ответом на AJAX / JSON?

Нужно ли обновлять контроллер, чтобы отвечать (т.е. перенаправлять) на этот запрос?

Функция:

window.ajaxLogout = function(logoutUrl) {
    Swal.fire({
        title: 'Ready to Leave?',
        text: "Select 'Logout' below if you are ready to end your current session.",
        type: 'question',
        showCancelButton: true,
        confirmButtonColor: '#3085d6',
        confirmButtonText: 'Logout'
    }).then((result) => {
        if (result.value) {
            $.ajax({
                url: logoutUrl,
                headers: {
                    'X-CSRF-Token': $('meta[name=csrf-token]').attr('content')
                },
                type: "DELETE"
            })
        }
    })
}

Запись в журнале при запуске функции:

Started DELETE "/logout" for IPXXX at 2019-10-29 19:14:47 -0400

Processing by Users::SessionsController#destroy as */*
  User Load (0.7ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  Account Load (0.3ms)  SELECT  "public"."accounts".* FROM "public"."accounts" WHERE "public"."accounts"."subdomain_name" = $1 LIMIT $2  [["subdomain_name", "demo"], ["LIMIT", 1]]
   (0.2ms)  BEGIN
   (0.6ms)  SELECT COUNT(*) FROM "users"
   (0.3ms)  COMMIT
Completed 204 No Content in 19ms (ActiveRecord: 3.8ms)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...