2016-12-12 8 views
0

クライアント側にはAngular2、REST APIのようなサーバー用のSymfony3を使ってWebアプリケーションを構築しています。 しかし、AngularとSymfonyの間でユーザーのセッションIDをどのように共有できるかはわかりません。Angular2 - Symfony3 appクライアントとサーバーの間でセッションを送信する方法は?

セッションをSymfonyに保存しようとしましたが、セッションが滞っておらず、RESTルールに従っていないようです。

次に、セッションをLocalStorageとしてAngularに格納しようとしましたが、次の問題が発生しました: このセッションについてSymfonyに伝えるには?見つかった唯一の解決策は、このセッションをGETパラメータとしてリンクに送信することでしたが、私はこれが気に入らないのです。 ...

おかげ

答えて

1

私がする別の方法として、JSONウェブトークン(https://jwt.io)に見えると思いますが、私は、セキュリティ違反のようにそれを見ると、それはまた、常にすべてのルートにセッションIDを追加することは非常に重いだろうクッキー(あなたのような場合)。

まだクッキーを使いたい場合は、セッション開始時にいつでもCookieを設定することができ、それはサーバーへのリクエストごとに送信されます。

あなたは自分でセッションIDの再生を処理する必要があります。

+0

大変ありがとうございます、私はそれを見てみましょう! – Fab

1

Magdが述べたように、JWTを使うことができます。

JSON Webトークン(JWT)は、基本的に、ユーザーのIDやお気に入りの色など、ユーザーが入力したいデータを含む大きなJSON文字列です。しかし、その後、JSONは暗号で署名され、エンコードされ、JSONのようには見えない新しい文字列を作成します。

たとえば、ユーザーは、自分の認証情報をAngularログインフォームに入力します。そのデータはREST APIに送信されます。資格証明が有効な場合、REST APIはJWTを返します。 Angular app(クライアント)はトークンをローカルストレージに保存し、すべての要求に対して認証用に送信します。

トークン認証システムを作成するには、Symfonyのコアセキュリティシステムの一部であるGuardを使用できます。

詳細情報あなたがで見つけることができます: http://matkodjipalo.com/index.php/2016/08/18/symfony-rest-api-token-authentication/

か:また https://knpuniversity.com/screencast/symfony-rest4/json-web-token#play

、あなたはHTTPSを使用する必要があります。

+0

大変ありがとう、私はそれを見てみましょう! – Fab

関連する問題