使用 Paginator (backbone.js) 时无法检测用户是否登录
-
12-12-2019 - |
题
我正在使用 Backbone.js 分页器 插入。它通过为分页中涉及的模型定义自己的 Collection 来很好地实现无限滚动分页。如果用户登录,PHP后端将返回带有附加属性的Backbone对象 is_liked
使该项目具有不同的 CSS 样式。
问题:当Paginator插件(有自己的Collection) Backbone.Paginator.requestPager
) 执行 GET fetch
向后端请求,后端无法判断用户是否登录!然而,当我使用通常的 Backbone.Collection
, ,后台能够判断用户是否登录!它与一个 $.post()
也。这让我认为问题出在插件的 Backbone.Paginator.requestPager
我正在使用 Chrome 开发者工具的网络部分检查结果。如果身份验证检查有效, api/test
可以看到返回了一些关于用户的数据。如果无法确定登录状态,则返回null
更新: 这 GET
请求发送者 Backbone.Paginator.requestPager
集合不包括 Cookie
标题中的信息可以在 GET
请求发送者 Backbone.Collection
. 。这可能是问题所在吗?我怎样才能强迫 Backbone.Paginator.requestPager
不从标头中删除 cookie 数据?
这里发生了什么?我该如何解决这个问题(无需重写我自己的分页代码)?
使用 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'
});
分页器的集合 [不起作用]
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 问题。