2017-02-27 19 views
0

8ページが制限されている(アプリケーションでログインする必要があります)10ページの動的ページ(おそらくフォーム)があり、2ページが匿名ユーザーに利用可能であるとします。Laravel Passport - ゲストトークン

私のフロントエンドアプリケーションはAngular 2で、バックエンドAPIはLaravel 5.4で開発されました。私はJWTトークンにもっと魅了され、laravelにはパスポートを通してサポートが組み込まれていることがわかりました。

質問:私は簡単にそれらの8制限ページのpassword grant tokensを使用することができます

  1. 。しかし、それらの2つのページにアクセスするためにAngularアプリにゲストトークンを与えるにはどうすればいいですか?
  2. 8人の制限付きページのAPI機能にアクセスするゲストユーザを制限する方法を教えてください。 (またはどのように訪問したユーザーがゲストであるか、APIの最後にユーザーにログインした場合、私はチェックしない)

注:それは に私のアプリは、任意の制限されたAPI機能を使用できるようになりますように私はPersonal Access Tokensを使用することはできません

+1

[トークンスコープ](https://laravel.com/docs/5.4/passport#token-scopes)は、ユーザーの操作を制限するのに役立ちます。送信するゲストユーザーに対して1つの「グローバル」アクセストークンを作成できます認証されていないすべてのユーザーに送信します。 – Tek

+0

興味深いですね!私はそれについてもっと探るつもりです。ありがとうTek! –

+0

@SahilPuravを見つけましたか?もしそうなら、あなたはこのゲスト認証メカニズムをカバーするためにあなたがしたことを分かち合うことができますか?私はあなたと同じような状況にいる。 –

答えて

1

ここではJWTアプローチを使用しました。私の場合は、私のAPIからJWTトークンを作成しました。 JWT機能を使用したい方は、this packageをご覧ください。私は "Guest"と呼ばれる新しいペイロードを追加し、ブール値を割り当てました。私のデータベースでは、新しいユーザー(匿名ユーザーと呼ばれる)を追加し、そのIDを自分のlaravel構成に格納しました。

次に、ユーザーを検証し、ペイロード(base64_decode)を抽出し、それがゲストかどうかを識別する新しいミドルウェアVerifyJwtTokenを作成しました。今私のLaravelのルートはすべてこのミドルウェアの中にあります。

次に、このトークンをlaravelセッションに格納し、localStorage(角を使ってアクセスするため)に格納しました。

今、私はlocalStorageからこのトークンに簡単にアクセスできます。 Angularエンドでは、私はAngular2Jwtパッケージを使用して、トークンを抽出し、それがゲストかログインしているユーザーかを識別しました。私はHTTP InterceptorをAngular 4で作成し、すべてのAPI要求でヘッダーとしてJWTトークンを追加しました。

関連する問題