PAGINATOR(backbone.js)を使用しているときにユーザーがログインしているかどうかを検出できません

StackOverflow https://stackoverflow.com//questions/11687190

質問

backbone.js paginator < / a>プラグイン。それは、ページ挿入に関与するモデルのためのそれ自身のコレクションを定義することによって、無限スクロールページ付けをよくします。ユーザーがログインしている場合、PHPバックエンドは追加の属性is_likedを持つバックボーンオブジェクトを返して、その項目が異なるCSSスタイルを持つようにします。

問題:Paginatorプラグイン(独自のコレクション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をヘッダーからクッキーデータを削除しないように強制できますか?

ここで何が起こっているの?そして、私はこれを解決することができます(私自身のページネーションコードを書き換えずに)?

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's Collection [ワークの仕事]

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の1つの要求は次のとおりです。 http://www.mysite.com/api/test?page=1

とこれには次のようにします。 http://mysite.com/api/test

ブラウザの場合はwww.mysite.comは完全に異なりますので、cookieがwww.mysite.comでmySite.comへの要求に応じては含まれません。両方の要求が同じドメインに行くことを確認し、Cookieの問題はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top