使用Paginator(主干.js)时无法检测用户是否已登录

Cannot detect if User is Logged in when using Paginator (backbone.js)

本文关键字:检测 用户 是否 登录 Paginator 主干 js 使用      更新时间:2024-03-09

我使用的是Backbone.js Paginator插件。它通过为参与分页的模型定义自己的Collection来很好地进行无限滚动分页。如果用户登录,PHP后端将返回具有附加属性is_liked的Backbone对象,以使该项具有不同的CSS样式。

问题:当分页器插件(具有自己的Collection Backbone.Paginator.requestPager)在后端执行GET fetch请求时,后端无法确定用户是否已登录!然而,当我使用通常的Backbone.Collection时,后端能够确定用户是否登录!它也适用于$.post()。这让我认为问题出在插件的Backbone.Paginator.requestPager

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

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

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

使用PHP后端(Laravel Framework)的Auth测试

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完全不同,因此如果在www.mysitecom上生成Cookie,则向mysite.com发出的请求将不会包含该Cookie。请确保两个请求都指向同一域,这样您就不会出现Cookie问题。