Pregunta

estoy usando el Paginador Backbone.js enchufar.Realiza bien la paginación de desplazamiento infinito al definir su propia Colección para los modelos involucrados en la paginación.Si el usuario ha iniciado sesión, el backend de PHP devolverá el objeto Backbone con un atributo adicional is_liked para hacer que ese elemento tenga un estilo CSS diferente.

Problema:Cuando el complemento Paginator (con su propia Colección Backbone.Paginator.requestPager) hace un GET fetch solicitud en el backend, ¡el backend no puede determinar si el usuario ha iniciado sesión!Sin embargo, cuando uso lo habitual Backbone.Collection, el backend puede determinar si el usuario ha iniciado sesión.Funciona con un $.post() también.Esto me hace pensar que el problema radica en el complemento. Backbone.Paginator.requestPager

Estoy comprobando los resultados utilizando la sección Red de las herramientas para desarrolladores de Chrome.Si la verificación de autenticación funciona, api/test Se puede ver que devuelve algunos datos sobre el usuario.Si no se puede determinar el estado de inicio de sesión, devuelve nulo

ACTUALIZAR: El GET solicitud enviada por Backbone.Paginator.requestPager La colección no incluye el Cookie información en los encabezados que se encuentran en el GET solicitud enviada por Backbone.Collection.¿Podría ser este el problema?¿Cómo puedo forzar Backbone.Paginator.requestPager ¿No eliminar los datos de las cookies de los encabezados?

¿Que está sucediendo aquí?¿Y cómo puedo solucionar esto (sin reescribir mi propio código de paginación)?

Prueba de autenticación 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());  
});

Colección típica de Backbone [Obras]

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

Colección del paginador [no 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;
    }

});
¿Fue útil?

Solución

Este es un problema entre dominios:

Una solicitud es a esta URL:http://www.mysite.com/api/test?page=1

Y el otro a esto:http://mysite.com/api/test

Para los navegadores www.mysite.com es totalmente diferente, por lo que si la Cookie se genera en www.mysite.com, las solicitudes a mysite.com no la contendrán.Asegúrese de que ambas solicitudes vayan al mismo dominio y no tendrá el problema de las cookies.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top