3

我正在使用Backbone.js 分页器插件。它通过为分页中涉及的模型定义自己的集合来很好地进行无限滚动分页。如果用户已登录,PHP 后端将返回带有附加属性的 Backbone 对象,is_liked以使该项目具有不同的 CSS 样式。

问题:当 Paginator 插件(带有自己的 Collection Backbone.Paginator.requestPager)在后端执行 GETfetch请求时,后端无法确定用户是否已登录!但是,当我使用通常Backbone.Collection的 时,后端能够确定用户是否已登录!它也适用于 a $.post()。这让我觉得问题出在插件的Backbone.Paginator.requestPager

我正在使用 Chrome 开发者工具的网络部分检查结果。如果身份验证检查有效,api/test则可以看到返回有关用户的一些数据。如果无法确定登录状态,则返回 null

更新:集合发送的GET请求Backbone.Paginator.requestPager不包括在发送的请求Cookie中找到的标头中的信息。这可能是问题吗?如何强制不从标头中删除 cookie 数据?GETBackbone.CollectionBackbone.Paginator.requestPager

这里发生了什么?我该如何解决这个问题(无需重写我自己的分页代码)?

使用 PHP 后端(Laravel 框架)进行身份验证测试

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

Paginator 的集合 [不工作]

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

});
4

1 回答 1

1

这是一个跨域问题:

一个请求是到这个 URL: http ://www.mysite.com/api/test?page=1

另一个是:http: //mysite.com/api/test

对于浏览器 www.mysite.com 是完全不同的,因此如果在 www.mysite.com 上生成 Cookie,对 mysite.com 的请求将不包含它。确保两个请求都发送到同一个域,并且您不会遇到 Cookie 问题。

于 2012-07-27T13:17:13.267 回答