[Laravel5.5でREST API + SPA] API認証を実装する (JWTAuth) バックエンド編

JWTAuth をインストール・設定

※2018/06/14現在、laravel5.5の場合jwt-authの開発版を入れないと設定中にエラーが出てしまうので開発版を入れます。

 

config/app.phpにJWTAuthをプロバイダ登録し、エイリアスを設定します。

laravelは外部パッケージを使用する場合、このプロバイダ登録をすることによって有効化できる仕組みになっています。

 

次に、このベンダーパブリッシュコマンドを叩きます。
これも外部パッケージを使用するときの初期設定のようなもので、当該パッケージ用の設定ファイルなどが生成されます。

 

続いて今度はJWTAuth用のシークレットを自動生成します。
トークンを発行する際のハッシュキーのようなものですね。
php artisan jwt:secret とすることで.envファイルに自動追記されます。

 

最後に、ルーティングでミドルウェアとして使用できるように、Kernel.phpに上記を追記します。

 

ルーティング設定

laravelには「ミドルウェア」という概念があります。
これは

・ユーザからのリクエストがコントローラに入る前
・コントローラのレスポンスがユーザに返る前

に何がしかの処理をかけることができる仕組みで、ルーティングと組み合わせて設定することができます。
ページURLごと、あるいはコントローラごとに共通処理をまとめて記述することができるので、認証処理にはうってつけの機能であるわけです。

 

api.phpのルーティング設定を上記のようにします。
これだけで、/usersのREST APIに認証をかけることができます。

 

この通り、401エラーが返るようになりました。

 

ログイン・ログアウト処理を行うコントローラを作成

このコントローラが認証処理を担当します。

 

api.phpのルーティングに認証関連を追記します。
authenticate(ログイン)は認証の外に置きます。

また、UserモデルをJWTAuthに対応させる必要があります。

JWTSubjectをimplementして、getJWTIdentifierメソッドとgetJWTCustomClaimsを実装します。

これでログインできるようになりました。
テストユーザでログインしてみます。

ログインに成功すると、このようにトークンが取得できます。
このトークンをヘッダに含めてリクエストすることで、認証を通過することができます。

curlだとちょっと長くて煩雑に見えますが、このような形です。
これでユーザ一覧が取得できるようになりました。

 

ログアウトはこのように。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る