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

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

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

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

Q&A

0回答

577閲覧

Lavel7 Admin認証を実装したがAdminアカウントでログインできない

mikeko0901

総合スコア227

Laravel

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

0グッド

0クリップ

投稿2021/03/17 07:22

編集2021/03/17 13:03

以下のサイトを参考に、User認証とは別にAdmin認証を実装しました。
【Laravel7でユーザー認証_9】マルチ認証機能を使って管理者を作成する

しかし、
イメージ説明
管理者用ログイン画面から情報を入力してログインボタンをクリックしても、

イメージ説明
同じログイン画面に戻ってしまいます……

■ルート web.php

<?php use Illuminate\Support\Facades\Route; Route::get('/', function () { return view('welcome'); }); Auth::routes(); Route::get('/home', 'HomeController@index')->name('home'); //ユーザーのパスワード変更 省略 //退会処理 Route::get('/deactive', 'Auth\DeactiveController@showDeactiveForm')->name('deactive.form'); Route::post('/deactive', 'Auth\DeactiveController@deactive')->name('deactive'); //Admin Route::namespace('Admin')->prefix('admin')->name('admin.')->group(function() { //Admin下のコントローラーを使用するので、namespace Route::get('/', 'HomeController@index'); //追加した Route::get('home', 'HomeController@index')->name('home'); Route::get('login', 'Auth\LoginController@showLoginForm'); Route::post('login', 'Auth\LoginController@login')->name('login'); Route::post('logout', 'Auth\LoginController@logout')->name('logout'); });

■ルート一覧(php artisan route:list)

---------------------------------------------------------+-------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------+------------------+------------------- | | GET|HEAD | / | | Closure | web | | | GET|HEAD | admin | admin. | App\Http\Controllers\Admin\HomeController@index | web | | | | | | | auth:admin | | | GET|HEAD | admin/home | admin.home | App\Http\Controllers\Admin\HomeController@index | web | | | | | | | auth:admin | | | POST | admin/login | admin.login | App\Http\Controllers\Admin\Auth\LoginController@login | web | | | | | | | guest:admin | | | GET|HEAD | admin/login | admin. | App\Http\Controllers\Admin\Auth\LoginController@showLoginForm | web | | | | | | | guest:admin | | | POST | admin/logout | admin.logout | App\Http\Controllers\Admin\Auth\LoginController@logout | web | | | GET|HEAD | api/user | | Closure | api | | | | | | | auth:api | | | POST | deactive | deactive | App\Http\Controllers\Auth\DeactiveController@deactive | web | | | | | | | auth | | | GET|HEAD | deactive | deactive.form | App\Http\Controllers\Auth\DeactiveController@showDeactiveForm | web | | | | | | | auth | | | GET|HEAD | home | home | App\Http\Controllers\HomeController@index | web | | | | | | | auth | | | POST | login | | App\Http\Controllers\Auth\LoginController@login | web | | | | | | | guest | | | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web | | | | | | | guest | | | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web | +--------+----------+------------------------+------------------+-------------------

(文字数制限のため、password confirm等は省略しました)

■コントローラー Admin\Auth\LoginController.php

<?php namespace App\Http\Controllers\Admin\Auth; use App\Http\Controllers\Controller; use App\Providers\RouteServiceProvider; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; //追加 //use Illuminate\Support\Facades\Auth; //別サイトを見て追加してみた class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = RouteServiceProvider::ADMIN_HOME; public function __construct() { $this->middleware('guest:admin')->except('logout'); } protected function guard() { //Userはトレイトのを使用しているが、Adminはここで上書きする return Auth::guard('admin'); } //ログインフォームのview指定 public function showLoginForm() { return view('admin.auth.login'); } //ログアウトの処理 public function logout(Request $request) { Auth::guard('admin')->logout(); return $this->loggedOut($request); } //ログアウト時のリダイレクト先 public function loggedOut(Request $request) { return redirect(route('admin.login')); } }

■管理者ログインフォームのビュー views\admin\auth\login.blade.php

@extends('layouts.admin.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">{{ __('Admin') }}{{ __('Login') }}</div> <div class="card-body"> <form method="POST" action="{{ route('admin.login') }}"> @csrf <div class="form-group row"> <label for="username" class="col-md-4 col-form-label text-md-right">{{ __('UserName') }}</label> <div class="col-md-6"> <input id="username" type="username" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus> @error('username') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> <div class="col-md-6"> <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password"> @error('password') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <div class="col-md-6 offset-md-4"> <div class="form-check"> <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}> <label class="form-check-label" for="remember"> {{ __('Remember Me') }} </label> </div> </div> </div> <div class="form-group row mb-0"> <div class="col-md-8 offset-md-4"> <button type="submit" class="btn btn-primary"> {{ __('Admin') }}{{ __('Login') }} </button> </div> </div> </form> </div> </div> </div> </div> </div> @endsection

アドバイスをいただけますと幸いです。


追記
■RouteServiceProvider::ADMIN_HOMEの値
app/Providers/RouteServiceProvider.php

protected $namespace = 'App\Http\Controllers'; public const HOME = '/home'; public const ADMIN_HOME = '/admin/home';

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

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

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

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

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

Lulucom

2021/03/17 07:46 編集

バリデーションエラーが起きてログインページへリダイレクトされて再表示されているけど、エラーメッセージをどこにも表示していないので、ただ再表示されているだけに見えている、ということはないですか? ↑失礼しました、ログインページのBladeを見るとエラーメッセージは表示されそうですね。
Lulucom

2021/03/18 00:11 編集

RouteServiceProvider::ADMIN_HOME がどのような値になっているかも掲載されると良いでしょう。 参考にされたサイトで、設定キャッシュクリアのコマンドが php artisan config:cache と書かれていますが、php artisan config:clear が正しいので注意しましょう。もし php artisan config:cache を実行してしまったなら、php artisan config:clear でクリアした後に、問題となっている動作を再確認してみましょう。
mikeko0901

2021/03/17 13:03

ありがとうございます。RouteServiceProvider::ADMIN_HOMEについて追記させていただきました。 キャッシュクリアのコマンドもありがとうございます!
hentaiman

2021/03/17 13:46

guardが効いてなくてuserテーブル見てるのか? login実装したらどうなります?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問