2017-03-19 21 views
0

ポート3001でリスニングするノード/エクスプレス/パスポートバックエンドを取得しましたが、これはブラウザで直接認証して認証します。保護されたURLへのアクセスを認証し、制御します。フロントエンドはポリマーであり、開発者のために別のポート(8080)で提供されます。認証後Expressはブラウザをポリマーアプリにリダイレクトします。問題は、ポリマーアプリケーションが高速バックエンドにIron-ajaxコールを戻し、認証cookie /セッションハンドルが渡されないため、バックエンドがリクエストを拒否するときです。NodeJS/Passport/Expressバックエンドとのクロスサイト・セッション

私は、バックエンドがフロントエンド(users.foo.com)とは異なるサブドメイン(backend.foo.com)にあると考えています。明示的/パスポートを取得して、すべてのサブドメインで共有されるセッションCookieを設定する方法を知っている人がいれば興味がありますか?

答えて

1

クロスサイトセッションとサブドメインCookieは全く異なるものです。

サブドメインのためのあなたのセッションクッキーを利用できるようにするには、あなたがこのような何か行うことができる必要があります:異なる、関係のないドメイン間で利用可能なセッションを持っているために

app.use(express.session({ 
    cookie: { 
    path: '/', 
    domain: '.example.com', 
    } 
})); 

を、あなたはより多くの複雑な機構を使用する必要がありますドメイン間でデータを共有することはできますが、質問のタイトルには後者が必要であることが示唆されていますが、質問の内容からサブドメインのクッキーが必要です。クロスオリジンリソース共有を - -

もCORSについて読み、それは時々、このような状況のために正しく設定するには、本当の痛みをすることができるので、何が原因誤って設定CORSにブロックされていないことを確認してください。

+0

私は、生産現場でこれをやったが、私は同じ問題を抱えています。 backend.bar.comがfoo.bar.comにリダイレクトされると、ブラウザはドメイン名が.bar.comのクッキーを取得します。その後、foo.bar.comがbackend.bar.comへのiron-ajax呼び出しを行うと、cookieは渡されません。 –

+1

@RichardRowell CORSに関連している可能性があります。私の更新された答えを見てください。再び – rsp

+0

おかげで、私はres.header( "とAccess-Control-Allow-Credentials"、 "真の")を添加した後、私のミドルウェアに渡し、Access Control-Allow-Originを絞り込みました。 –

関連する問題