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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

228閲覧

Laravelで自動で作成した認証機能を他のviewに適用したい。

HearthXml

総合スコア51

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/10/08 16:05

編集2018/10/08 16:43

前提・実現したいこと

環境

PHP 7.1.16
Laravel Framework 5.7.8
mysql

やったこと

下のコマンドで/homeでログインページ、mysqlに認証機能に必要なテーブルを自動で作成し、それを自分の作ったviewに適用しようと考えていました。

bash

1> php artisan make:auth 2> php artisan migrate

下のソースがマスターページの認証部分です。
ログイン、登録はできますが、ログアウトができません。
value="tBlNhvPNm1dqXVEQ1GVgb12VPQ4C9f3wO331Tfdm"という部分がログインする度に変わる値で設定する処理を必要があるのですが、何の値か、取得方法がわかりません。
エラー内容はブラウザでは419 Sorry, your session has expired. Please refresh and try again.
エラーログは出力されていません。

php

1@if (Auth::check()) 2 <li class="nav-item"> 3 <a class="nav-link" id="A" href="/logout" onclick="event.preventDefault(); 4 document.getElementById('logout-form').submit();">ログアウト</a> 5 </li> 6 <form id="logout-form" action="http://127.0.0.1:8000/logout" method="POST" style="display: none;"> 7 <input type="hidden" name="_token" value="tBlNhvPNm1dqXVEQ1GVgb12VPQ4C9f3wO331Tfdm"> </form> 8@else 9 <li class="nav-item"> 10 <a class="nav-link" id="A" href="/login">ログイン</a> 11 </li> 12 <li class="nav-item"> 13 <a class="nav-link" id="A" href="/register">登録</a> 14 </li> 15@endif

質問内容
自分で/home以外での認証機能の実装方法を調べましたが、php artisan make:authは汎用性が低いから自力で実装されている記事しか見つけられず、自力で実装した方がいいのか、/homeにあるものを流用して上記のエラーを解決して実装するかわかりません。
もし流用するのでしたら、エラーの解決方法を教えてください。

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

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

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

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

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

Orlofsky

2018/10/08 16:15

タグ[MySQL]を追加してください。
m.ts10806

2018/10/08 22:53

「質問内容」に入るまでに要件が沢山あるように見受けられます。1つ1つ「できません」を解決された方が良いように思うのですが、それらをスルーしても「質問内容」のみで良いのでしょうか。
退会済みユーザー

退会済みユーザー

2018/10/08 23:03

csrfトークンをとって何をするの?
退会済みユーザー

退会済みユーザー

2018/10/08 23:24

Orlofsky 認証データの保存先がmysqlになってるだけでmysqlは全く意識しないでもいいやつよ。初期設定がポスグレならポスグレに保存されますので
HearthXml

2018/10/09 13:17 編集

asahina1979さん LaravelはデフォルトでCSRF対策が付いていてPostする際にはCSRFトークン(inputにあるvalue)が必要になりcsrf_token()かcsrf_field()でトークンを埋め込む必要があるってことですよね。忘れてました。 ありがとうございました。
HearthXml

2018/10/09 13:16 編集

mts10806さん ここのコメント欄で「できません」が解決したので、質問内容のみでお願いします。
m.ts10806

2018/10/09 14:52

質問本文にわかるように反映していただければOKです
guest

回答1

0

ベストアンサー

<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">@csrf</form>

@csrf
または
{{ csrf_field() }}

というのを入れると、以下の様な hiddenフォームと値に乱数が生成されるようになります。

<input type="hidden" name="_token" value="tBlNhvPNm1dqXVEQ1GVgb12VPQ4C9f3wO331Tfdm">

これはセキュリティ対策の一環で、色々理屈はありますが、ひとまず<form></form> タグで囲む中にほぼ必須で必要なものという風に理解していただくと良いかと思います。(質問のコードには</form>がないのでご注意)Laravelは標準でこれが無いと正常に処理を終わらせることができません。
詳しくは以下の検索で参照してください。
https://www.google.co.jp/search?q=csrf

投稿2018/10/12 00:41

編集2018/10/12 00:50
sakamata

総合スコア203

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問