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

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

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

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

Laravel 5

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

Q&A

解決済

1回答

7340閲覧

Laravel5.5 ログイン認証でログアウト

AMK

総合スコア765

PHP

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

Laravel 5

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

0グッド

0クリップ

投稿2017/11/25 09:42

編集2017/11/25 17:07

laravel5.5を勉強中のものです。

自作のコントローラにもログイン認証機能を追加したいと思い
調べた結果

php

1 public function __construct() 2 { 3 $this->middleware('auth'); 4 }

上記のコードを自作のコントローラに追加することでログイン認証は出来るようになったのですが
ログアウトをさせようとすると
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message
と言うエラーになってしまいログアウトがうまく動きませんでした。

$this->middleware('auth',['expect'=>'/logout']);
を入れてみたり色々試してみたりしたのですが・・・

自分で試せることはやり尽くしてしまったのでご教示頂けると幸いです。

以下が自作のコントローラの一部です。

[補足]
デフォルトのログイン、ログアウトの画面では問題なくログアウト出来ています

php

1namespace App\Http\Controllers; 2 3use Illuminate\Foundation\Bus\DispatchesJobs; 4use Illuminate\Routing\Controller as BaseController; 5use Illuminate\Foundation\Validation\ValidatesRequests; 6use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 7use Illuminate\Foundation\Auth\AuthenticatesUsers; 8use Illuminate\Http\Request; 9use App\Customer; 10class CustomersController extends BaseController 11{ 12 use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 13 public function __construct() 14 {//ログイン認証 15 $this->middleware('auth'); 16 $this->middleware('auth',['expect'=>'/logout']); 17 }

default.blade.php

php

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>@yield('title')</title> 6 <link rel="stylesheet" href="/css/style.css"> 7</head> 8<body> 9 <header> 10 <ul> 11 <li><a href="/">TOP</a></li> 12 <li><a href="/new">新規作成</a></li> 13 <li><a href="/dl">CsvDownload</a></li> 14 <li><a href="{{ route('logout') }}">ログアウト</a></li> 15 </ul> 16 </header> 17 <div class="container"> 18 @yield('content') 19 </div> 20</body> 21</html>

routes/web.php

php

1//認証ルート 2Auth::routes(); 3Route::get('/', 'CustomersController@index'); 4Route::get('/new', 'CustomersController@new'); 5Route::post('/create', 'CustomersController@create'); 6Route::get('/show/{customer}', 'CustomersController@show'); 7Route::get('/edit/{customer}', 'CustomersController@edit'); 8Route::patch('/update/{customer}', 'CustomersController@update'); 9Route::delete('/delete/{customer}', 'CustomersController@delete'); 10Route::get('/search/', 'CustomersController@search'); 11Route::get('/dl/', 'CustomersController@csvDownload'); 12 13Route::get('/hello', 'CustomersController@index'); 14Route::get('/home', 'HomeController@index')->name('home'); 15 16//テストでログアウト登録してみた。 17Route::get('/logout', 'Auth\AuthController@getLogout');

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

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

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

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

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

guest

回答1

0

ベストアンサー

routes/web.phpにAuth::routes();を追加するのを忘れていたとか?

そもそもartisanでmake:authを実行しなかったのでしょうか?
最初は普通にコマンドラインから下の2つを実行して認証機能を自動的に追加する方がいいと思いますよ。

php artisan make:auth php artisan migrate

Laravel 5.5 認証
https://readouble.com/laravel/5.5/ja/authentication.html

投稿2017/11/25 10:03

ooeok

総合スコア469

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

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

AMK

2017/11/25 13:07

回答ありがとうございます! php artisan make:auth php artisan migrate は実行していまして、サンプルの動作は問題なくログイン、ログアウトが出来ています 勿論、routes/web.phpにAuth::routes();も記入されていました
ooeok

2017/11/25 14:27

AMKさんが言われるサンプルというのは、artisan make:authしたとき勝手に作られるコントローラとビューのことですよね? で、そちらではログアウト出来ていると。 間違っているのは自作のコントローラではなく、ビューの方では? ログアウトformにcsrf付け忘れていたとか。 それから、質問の補足以下のソースコードを見られる形にして下さい。 なにか分かるかもしれません。
AMK

2017/11/25 17:08

回答ありがとうございます。 >AMKさんが言われるサンプルというのは、artisan make:authしたとき勝手に作られるコントローラと>ビューのことですよね? >で、そちらではログアウト出来ていると。 おっしゃる通りです。 追加でソースコード載せましたのでよろしくお願いします。
AMK

2017/11/25 17:15

おっしゃる通り、CSRFの処理が抜けておりました。 ありがとうございます。!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問