Pergunta

estou usando o Paginador Backbone.js plugar.Ele faz bem a paginação de rolagem infinita, definindo sua própria coleção para os modelos envolvidos na paginação.Se o usuário estiver logado, o backend PHP retornará o objeto Backbone com um atributo adicional is_liked para fazer com que esse item tenha um estilo CSS diferente.

Problema:Quando o plugin Paginator (com sua própria coleção Backbone.Paginator.requestPager) faz um GET fetch solicitação no backend, o backend não consegue determinar se o usuário está logado!No entanto, quando uso o habitual Backbone.Collection, o backend é capaz de determinar se o usuário está logado!Funciona com um $.post() também.Isso me faz pensar que o problema está no plugin Backbone.Paginator.requestPager

Estou verificando os resultados usando a seção Rede das ferramentas para desenvolvedores do Chrome.Se a verificação de autenticação funcionar, api/test pode ser visto retornando alguns dados sobre o usuário.Se o status de login não puder ser determinado, ele retornará nulo

ATUALIZAR: O GET solicitação enviada por Backbone.Paginator.requestPager coleção não inclui Cookie informações nos cabeçalhos encontrados no GET solicitação enviada por Backbone.Collection.Esse poderia ser o problema?Como posso forçar Backbone.Paginator.requestPager não retirar os dados dos cookies dos cabeçalhos?

O que esta acontecendo aqui?E como posso resolver isso (sem reescrever meu próprio código de paginação)?

Teste de autenticação usando 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());  
});

Coleção Backbone Típica [Funciona]

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

Coleção do Paginator [não funciona]

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;
    }

});
Foi útil?

Solução

Este é um problema entre domínios:

Uma solicitação é para este URL:http://www.mysite.com/api/test?page=1

E o outro para isso:http://mysite.com/api/test

Para os navegadores www.mysite.com é totalmente diferente, portanto se o Cookie for gerado em www.mysite.com as solicitações para mysite.com não o conterão.Certifique-se de que ambas as solicitações vão para o mesmo domínio e você não terá problemas com cookies.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top