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

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

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

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

PHP

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

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Authentication

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

Q&A

0回答

765閲覧

最初に登録したユーザデータが、違うユーザでも出力され続けます。

phpartisan

総合スコア1

Laravel

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

PHP

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

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Authentication

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

0グッド

1クリップ

投稿2021/05/31 07:43

前提・実現したいこと

現在laravel8、windows10環境でログイン機能を開発中です。
ログイン機能の作成はこの記事の通りに行いました。(リンク内容
ログイン時に以下の問題が発生しました。

発生している問題・エラーメッセージ

「最初にアカウントAでユーザ登録しAでログイン、次にAをログアウト。その後アカウントBでログインすると、ログインは成功するがアカウントAのデータがviews\layouts\app.blade.phpの{{Auth::user()->name}}に返される。」という問題です。アカウントCでログインしても、アカウントAのデータが返されます。

loginControllerのloginメソッド、logoutメソッドはデフォルトで使用しています。

怪しい点として「アカウントAを最初に登録し、次にアカウントBを登録、その後最初のログインをアカウントBから行ったところ、まだ一度もログインしていないアカウントAのデータが出力される」という現象が起きました。

該当のソースコード

必要かは分かりませんが、念のためapp.blade.phpを載せておきます。

Laravel

1app.blade.php 2 3<!doctype html> 4<html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> 5<head> 6 <meta charset="utf-8"> 7 <meta name="viewport" content="width=device-width, initial-scale=1"> 8 9 <!-- CSRF Token --> 10 <meta name="csrf-token" content="{{ csrf_token() }}"> 11 12 <title>{{ config('app.name', 'Laravel') }}</title> 13 14 <!-- Scripts --> 15 <script src="{{ asset('js/app.js') }}" defer></script> 16 17 <!-- Fonts --> 18 <link rel="dns-prefetch" href="//fonts.gstatic.com"> 19 <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet"> 20 21 <!-- Styles --> 22 <link href="{{ asset('css/app.css') }}" rel="stylesheet"> 23</head> 24<body> 25 <div id="app"> 26 <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm"> 27 <div class="container"> 28 <a class="navbar-brand" href="{{ url('/') }}"> 29 {{ config('app.name', 'Laravel') }} 30 </a> 31 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}"> 32 <span class="navbar-toggler-icon"></span> 33 </button> 34 35 <div class="collapse navbar-collapse" id="navbarSupportedContent"> 36 <!-- Left Side Of Navbar --> 37 <ul class="navbar-nav mr-auto"> 38 39 </ul> 40 41 <!-- Right Side Of Navbar --> 42 <ul class="navbar-nav ml-auto"> 43 <!-- Authentication Links --> 44 @guest 45 @if (Route::has('login')) 46 <li class="nav-item"> 47 <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a> 48 </li> 49 @endif 50 51 @if (Route::has('register')) 52 <li class="nav-item"> 53 <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a> 54 </li> 55 @endif 56 @else 57 <li class="nav-item dropdown"> 58 <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre> 59 <img src="http://localhost:8000/storage/{{ Auth::user()->image }}" > 60 {{ Auth::user()->name }} ←ここにアカウントBの名前を出力したい 61 62 </a> 63 64 <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"> 65 <a class="dropdown-item" href="{{ route('logout') }}" 66 onclick="event.preventDefault(); 67 document.getElementById('logout-form').submit();"> 68 {{ __('Logout') }} 69 </a> 70 71 <form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none"> 72 @csrf 73 </form> 74 </div> 75 </li> 76 @endguest 77 </ul> 78 </div> 79 </div> 80 </nav> 81 82 <main class="py-4"> 83 @yield('content') 84 </main> 85 </div> 86</body> 87</html> 88

試したこと

1.リクエスト内容を確認してもアカウントBのデータはしっかりと送信されていました。
※ただし投稿者が初心者なので、正常にデバッグできていない可能性はあります。
2,セッションの終了ができていないのかと思い、再度LoginControllerのlogoutメソッドに新しくセッションを終了するメソッドAuth::logout()を追加しましたがダメでした。

Laravel

1 public function logout(Request $request){ 2 3 Auth::logout(); 4 5 //dd($request); 6 7 $request->session()->invalidate(); 8 9 $request->session()->regenerateToken(); 10 11 return redirect('/home'); 12 }

3,クッキーの削除
4,スーパーリロード
5,引き出すカラムがおかしいのかと思い、remember_tokenを試しに入れてみましたが、remember_tokenはアカウントBに保存されます。
6,違うブラウザでの実行

以上の操作では解決することができませんでした。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/05/31 08:15

php artisan view:clear / php artisan config:clear / php artisan route:clear はやってる?
phpartisan

2021/05/31 15:02

先程、その操作を行ってみたところ、結果は変わりませんでした。 他に何か心当たりがあるようでしたらご教示いただければ幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問