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

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

新規登録して質問してみよう
ただいま回答率
85.48%
公開鍵認証

公開鍵認証とは、公開鍵と秘密鍵の2つの鍵の組を利用する、SSHで利用される認証方式です。

Laravel

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

PHP

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

ログイン

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

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

Q&A

0回答

789閲覧

管理者(Admin)とユーザ(User)の認証が別々で行われません

phpartisan

総合スコア1

公開鍵認証

公開鍵認証とは、公開鍵と秘密鍵の2つの鍵の組を利用する、SSHで利用される認証方式です。

Laravel

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

PHP

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

ログイン

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

Blade

Bladeとは、 PHPフレームワークのLaravelで使用することができるテンプレートエンジンです。テンプレートの継承とエスケープ機能を提供します。

0グッド

0クリップ

投稿2021/06/21 06:52

前提・実現したいこと

Laravel8を使用しています。
/admin/loginというログインページからログインしたAdminの名前を/admin/homeのapp.blade.phpに表示したい。
同様にUserで/loginというログインページからログインしたUserの名前を/homeのapp.blade.phpで表示したい。

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

/admin/home(app.blade.php)でAdminの名前が出力されるはずが、Userの名前が出力される。

app.blade.phpでの@auth('admin')が一切効いていないことが原因だと思われます。(解決方法分かりません…)

該当のソースコード

Adminの登録処理とUserの登録処理、Adminのログイン処理とUserのログイン処理を載せています。

Guardはデフォルトが'web'で、Admin用Guardが'admin'になっています

AdminRegister

1protected function register(Request $request){ 2 3 $this->validator($request->all()); 4 5 $user = new Admin; 6 7 $user->name = $request->input('name'); 8 $user->email = $request->input('email'); 9 $user->password = Hash::make($request->password); 10 $user->id = $request->input('id'); 11 12 $user->save(); 13 14 15 $this->guard()->login($user); 16 17 return $this->registered($request, $user) 18 ?: redirect($this->redirectPath()); 19 } 20 21 protected function guard(){ 22 return Auth::guard('admin'); 23 }

UserRegister

1protected function userRegister(Request $request){ 2 $this->validator($request->all())->validate(); 3 4 $user = new User; 5 6 $user->name = $request->input('name'); 7 $user->email = $request->input('email'); 8 $user->password = Hash::make($request->password); 9 $user->id = $request->input('id'); 10 $user->user_description = $request->input('user_description'); 11 12 // imageに画像ファイルパスを保存する処理 13 $originalImg = $request->file('image'); 14 15 if(isset($originalImg)){ 16 17 $filePath = $originalImg->store('public'); 18 $user->image = str_replace('public/','', $filePath); 19 20 }else{ 21 $filePath = 'storage/defaultUserImg.jpg'; 22 $user->image = str_replace('storage/','', $filePath); 23 }; 24 25 $user->save(); 26 27 28 $this->guard()->login($user); 29 30 return $this->registered($request, $user) 31 ?: redirect($this->redirectPath()); 32 33 }

AdminLogin

1 public function login(Request $request) 2 { 3 4 $email = $request->input('email'); 5 $password = $request->input('password'); 6 $remember = $request->input('remember'); 7 8 if (Auth::guard('admin')->attempt(['email' => $email, 'password' => $password],$remember)) 9 { 10 // 認証に成功した 11 12 $request->session()->regenerate(); 13 14 // return Auth::user(); 15 16 return redirect()->route('admin.home'); 17 } 18 19 return back()->withErrors([ 20 'email' => 'The provided credentials do not match our records.', 21 ]); 22 }

UserLogin

1 2 public function login(Request $request) 3 { 4 $email = $request->input('email'); 5 $password = $request->input('password'); 6 $remember = $request->input('remember'); 7 8 if (Auth::attempt(['email' => $email, 'password' => $password,'delete_flag' => 1],$remember)) 9 { 10 // 認証に成功した 11 12 $request->session()->regenerate(); 13 14 // return Auth::user(); 15 16 return redirect()->route('home'); 17 } 18 19 return back()->withErrors([ 20 'email' => 'The provided credentials do not match our records.', 21 ]); 22 }

app

1 ヘッダー省略します 2 3<body> 4 <div id="app"> 5 <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm"> 6 <div class="container"> 7 <a class="navbar-brand" href="{{ url('/') }}"> 8 {{ config('app.name', 'Laravel') }} 9 </a> 10 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}"> 11 <span class="navbar-toggler-icon"></span> 12 </button> 13 14 <div class="collapse navbar-collapse" id="navbarSupportedContent"> 15 <!-- Left Side Of Navbar --> 16 <ul class="navbar-nav mr-auto"> 17 18 </ul> 19 20 <!-- Right Side Of Navbar --> 21 <ul class="navbar-nav ml-auto"> 22 <!-- Authentication Links --> 23 24 @auth('web') 25 <li class="nav-item dropdown"> 26 <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre> 27 <img src="http://localhost:8000/storage/{{ Auth::user()->image }}" > 28 {{ Auth::guard('web')->user()->name }} 29 30 </a> 31 32 <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"> 33 <a class="dropdown-item" href="{{ route('logout') }}" 34 onclick="event.preventDefault(); 35 document.getElementById('logout-form').submit();"> 36 {{ __('Logout') }} 37 </a> 38 39 <form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none"> 40 @csrf 41 </form> 42 </div> 43 </li> 44 @endauth 45 @auth('admin') 46 <li class="nav-item dropdown"> 47 <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre> 48 49 {{ Auth::guard('admin')->user()->name }} 50 51 </a> 52 53 <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"> 54 <a class="dropdown-item" href="{{ route('logout') }}" 55 onclick="event.preventDefault(); 56 document.getElementById('logout-form').submit();"> 57 {{ __('Logout') }} 58 </a> 59 60 <form id="logout-form" action="{{ route('admin.logout') }}" method="POST" class="d-none"> 61 @csrf 62 </form> 63 </div> 64 </li> 65 @endauth 66 @guest 67 @if (Route::has('login')) 68 <li class="nav-item"> 69 <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a> 70 </li> 71 @endif 72 73 @if (Route::has('register')) 74 <li class="nav-item"> 75 <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a> 76 </li> 77 @endif 78 @endguest 79 </ul> 80 </div> 81 </div> 82 </nav>

試したこと

・app.blade.phpで@auth('admin')がなぜか効いてません。(デバッグして確認しました)
・Admin登録→Adminログインまでの流れでしっかりGuardをadminに設定しているにも関わらず、admin/home(app.blade.php)ではUserの名前が表示された。

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

Windows10、Laravel8、PHP7

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問