🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

Q&A

1回答

973閲覧

laravel passportはwebとapiのサーバーが分離してても使えるのか?経験談、失敗談など求む。

退会済みユーザー

退会済みユーザー

総合スコア0

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

0グッド

1クリップ

投稿2019/10/02 16:53

laravel passportはwebとapiが同じサーバー内でしか使えないと思うのですが、
webとapiが別サーバーの場合、独自で機構を作るしかないでしょうか?

パスワードの概念をなくしたシステムを作ろうとしているの場合、尚更でしょうか?

nuxt.jsとkaravelで開発しています。
独自機構の場合、流れは以下を想定しています。


ユーザーの登録をする(パスワードはない)

  • api側でユーザーの登録
  • トークン自体が暗号だが、更に暗号化してユーザーのメールアドレスに登録完了メールを送信する(メール内にリンクを設置)

またはログイン認証リクエストの要求

  • メールアドレスを送信して、api側で諸々精査後、メールアドレスに登録完了メールを送信する(メール内にリンクを設置)

受信メールからログインをする

  • メール内のリンク押下によりnuxt側に遷移
  • nuxt側は指定パラメーターをapi側にリクエスト(パラメーターは1つだけじゃない&暗号化してるのでセキュリティー的には大丈夫だと思っている)

ログイン処理実行

  • トークンの解析と照会により該当ユーザーを突き止める
  • json形式で返す

ログイン済みの状態確保

  • vuexでログインユーザーの情報を保持する(ブラウザを閉じない限りは認証ページ間で行き来ができる想定)

ログイン状態の保持(次回から入力を省略する)

  • localstorageなどに諸々保持(有効期限内であればブラウザを閉じても認証ページ間で行き来ができる想定)

端折ってるところは多々ありますが、大まかな流れは以上を想定しています。
結局token生成して二段階認証みたいな形になるので、laravelpassportと同じ形式ではあるのですが、独自機構はなるべく避けたく、より多く世に認知されているもので実装したいところがあります。

apiとwebを別サーバーにする場合、やはりlaravel passportは使えないでしょうか?
サーバー分離しなければ普通にlaravelのauth機能(多分内部でセッション動いてたような記憶がある)が使えると思うのですが、apiとwebを分離した場合のログインのベストプラクティスといいますか、経験談をお尋ねしたいです。

色々調べててtokenをクッキーに保存とかいう方法も拝見しましたが、個人的にはあり得ないだろーとか思っていましたが、更に色々組み合わせて暗号化すればそこまで怖くないと思ったりしています。
(というかそうする以外にないような気がします。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

PassportはOAuthサーバーなので普通に分離して使える。
JSからAPI呼び出しで引っかかるとしたらCORSなのでそれだけ設定。

それより独自のユーザー登録をやめたほうがいいとは思う。
大丈夫と思ってても必ず漏れがある。

投稿2019/10/03 00:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/10/03 14:44

回答ありがとうございます。 CORSはlaravel側で設定しているのでその制約は大丈夫ですが、laravel passportでもサーバー間でsession保持できないと多いますので、web側で認証ページにアクセスす度に毎回、認証APIにアクセスしないといけないと思いますが、、、。 「使える。」というのはどういう運用や仕組みを想定して使えるに至ったのかが知りたいです。 例えば、tokenをブラウザや端末側に保存して、以降認証ページではtokenで認証API叩いたらユーザー情報引き出せるから、そういった意味で使えるなのかとか。。。 まず、「laravel passportでもサーバー間でsession保持できない」これがyesなのかnoなのかを先に解決したいです。
mikkame

2019/10/04 10:45

> 例えば、tokenをブラウザや端末側に保存して、以降認証ページではtokenで認証API叩いたらユーザー情報引き出せるから、そういった意味で使える こういう意味で使える、だと思われます OAuthにはsessionなしにtokenで認証します
退会済みユーザー

退会済みユーザー

2019/10/04 11:33

サーバー分離型で認証のところは実装したことがなかったので推測で話していましたが、やはり毎回ajaxでユーザー情報とってこないといけないのですね。。。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問