Невозможно определить, вошел ли пользователь в систему при использовании Paginator (backbone.js)
-
12-12-2019 - |
Вопрос
я использую Пагинатор 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.