Невозможно определить, вошел ли пользователь в систему при использовании Paginator (backbone.js)

StackOverflow https://stackoverflow.com//questions/11687190

Вопрос

я использую Пагинатор Backbone.js плагин.Он хорошо выполняет нумерацию страниц с бесконечной прокруткой, определяя собственную коллекцию для моделей, участвующих в нумерации страниц.Если пользователь вошел в систему, серверная часть PHP вернет объект Backbone с дополнительным атрибутом. is_liked чтобы этот элемент имел другой стиль CSS.

Проблема:Когда плагин Paginator (с собственной коллекцией Backbone.Paginator.requestPager) выполняет GET fetch запрос на серверную часть, серверная часть не может определить, вошел ли пользователь в систему!Однако, когда я использую обычный Backbone.Collection, серверная часть может определить, вошел ли пользователь в систему!Он работает с $.post() слишком.Это заставляет меня думать, что проблема кроется в плагине. Backbone.Paginator.requestPager

Я проверяю результаты, используя раздел «Сеть» инструментов разработчика Chrome.Если проверка подлинности работает, api/test видно, что он возвращает некоторые данные о пользователе.Если статус входа не может быть определен, он возвращает ноль

ОБНОВЛЯТЬ: А GET запрос отправлен Backbone.Paginator.requestPager коллекция не включает в себя Cookie информация в заголовках, которая находится в GET запрос отправлен Backbone.Collection.Может ли это быть проблемой?Как я могу заставить Backbone.Paginator.requestPager не удалять данные cookie из заголовков?

Что здесь происходит?И как я могу решить эту проблему (не переписывая собственный код нумерации страниц)?

Тест аутентификации с использованием PHP Backend (Laravel Framework)

Route::any('api/test', function() {
    // This will return some data of the user if logged in
    return json_encode(Auth::user());  
});

Типичная базовая коллекция [работает]

SimilarUserCollection = Backbone.Collection.extend({
    model: User,
    url: 'api/test'
});

Коллекция пагинатора [не работает]

PhotoCollection = Backbone.Paginator.requestPager.extend({
    model: Photo,

    paginator_core: {
            type: 'GET',
            dataType: 'json',
            url: 'api/test'
        },

    paginator_ui: {
        firstPage: 1,
        currentPage: 1,
        perPage: 7,
        totalPages: 10
    },

    server_api: {

        'page': function() { return this.currentPage; }
    },

    parse: function (response) {

        return response;
    }

});
Это было полезно?

Решение

Это междоменная проблема:

Один запрос направлен на этот URL-адрес:http://www.mysite.com/api/test?page=1

А другой на это:http://mysite.com/api/test

Для браузеров сайт www.mysite.com полностью отличается, поэтому, если файл cookie создается на сайте www.mysite.com, запросы на mysite.com не будут его содержать.Убедитесь, что оба запроса отправляются в один и тот же домен, и у вас не возникнет проблема с файлами cookie.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top