質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.49%
Nuxt.js

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

JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

Laravel

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

Q&A

解決済

1回答

1611閲覧

nuxt Authmoduleでログイン画面で遷移しない。

t_msda

総合スコア30

Nuxt.js

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

JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

Laravel

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CORS

CORSとはCross-Origin Resource Sharingの頭文字をとったもので、ブラウザがオリジン以外のサーバからデータを取得するシステムのことです。

0グッド

1クリップ

投稿2020/11/21 02:38

編集2020/11/21 04:42

前提・実現したいこと

Laravelのjwt、 nuxtのAuthModeule間の遷移を実現したいです。
Laravelをheroku,Nuxtをnetlifyにでデプロイし、ログイン処理でエラーが発生しました。
ログイン画面で正しいemail,passwordを入力するとtopページへ遷移するのですがそのままです。
一方、間違ったログインをするとバックエンドからのバリデーションによるエラ〜メッセージが返されるのは確認済みですのでログイン後のtokenがうまく処理できてないのではないかと考えられます。
また、デベロッパーツール ではundefindと出力されます。

バックエンド(laravel,heroku)のログ

2020-11-21T01:23:53.686116+00:00 "OPTIONS /api/login HTTP/1.1" 204 - "https://◯◯.netlify.app/" "Mozilla/5.0 2020-11-21T01:23:53.784655+00:00 "GET /api/posts HTTP/1.1" 200 25 "-" "axios/0.20.0 2020-11-21T01:23:53.790208+00:00 [21/Nov/2020:01:23:53 +0000] "GET /api/users HTTP/1.1" 200 357 "-" "axios/0.20.0 2020-11-21T01:23:53.788625+00:00 heroku[router]: at=info method=GET path="/api/posts" host=◯◯.herokuapp.com request_id=◯◯ status=200

いずれの200番代が返却されています。

該当のソースコード

php(AuthControler)

1 public function login(UserLoginRequest $request){ 2 3 if(!$token = auth()->attempt($request->only(['email','password']))){ 4 return response()->json([ 5 'errors' =>[ 6 'email'=>['メールアドレスとパスワードが一致しませんでした。'] 7 ] 8 ],422); 9 } 10 11 return (new UserResource($request->user()))->additional([ 12 'meta' => [ 13 'token' =>$token, 14 ] 15 ]); 16 }

php

1<?php 2 3return [ 4 'paths' => ['api/*'], 5 6 'allowed_origins' => ['https:/〇〇◯.netlify.app'], 7 8 'allowed_origins_patterns' => [], 9 10 'allowed_headers' => ['Content-Type','application/json','Authorization','Accept'], 11 12 'exposed_headers' => [], 13 14 'max_age' => 0, 15 16 'supports_credentials' => true, 17]; 18

nuxt

1methods: { 2 async asyncData({$auth}){ 3 try { 4 const {response} = await this.$auth.loginWith("local",{ 5 data:{ 6 email:this.form.email, 7 password:this.form.password, 8 } 9 }); 10 console.log(response) 11 this.$router.replace({ path: '/' }); 12 } catch (error) { 13 console.log(error.status) 14 } 15 } 16 },

nuxt

1 axios:{ 2 baseURL:"https://◯.herokuapp.com/api", 3 withCredentials: true, 4 }, 5 auth:{ 6 strategies:{ 7 local:{ 8 endpoints:{ 9 login:{ 10 url:'login', 11 method:'post', 12 propertyName:'meta.token' 13 }, 14 user:{ 15 url:'user', 16 method:'get', 17 propertyName:'data' 18 }, 19 logout:{ 20 url:'logout', 21 method:'post', 22 } 23 } 24 } 25 } 26 },

試したこと

laravelのallowed_headers、allowed_originsを設置しました。
デプロイ前はlocalhostで開発していた時(3000,8000)にはcorsエラーは発生しませんでしたがデプロイすると別ドメインになった影響かCorsエラー(error 500)が発生したので設置しました。設置する前では他の処理、ルーティングもerrorとなっていましたが設置することで200番台は返却されるようになりました。(herokuログにて確認済み)

Postmanにてバックエンドに問題ないことは確認済みです。

補足情報(FW/ツールのバージョンなど)

Laravel 6

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

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

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

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

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

guest

回答1

0

自己解決

JWT認証のシークレットキーがherokuの.envファイルに追記されていなかったためエラーとなっていました。

投稿2020/11/27 03:52

t_msda

総合スコア30

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問