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

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

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

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

Q&A

解決済

2回答

690閲覧

laravel5.5のマルチログインで利用モデルが切り替わっていなさそうなとき確認すべき場所

lkjgffh

総合スコア37

Laravel 5

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

0グッド

0クリップ

投稿2018/02/08 03:20

前提・実現したいこと

laravel5.5にてマルチログインを実装したい

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

Users以外に使いたいAdmin(管理者ログイン)ページからログインしようとすると下記のようなメッセージが表示されます
http://local.test_app/admin/login

These credentials do not match our records.

該当のソースコード

ルート

Auth::routes(); //1) User 認証不要 Route::get('/', function () { return redirect('/home'); }); //2) User ログイン後 Route::group(['middleware' => 'auth:user'], function() { Route::get('/home', 'HomeController@index')->name('home'); }); //3) Admin 認証不要 Route::group(['prefix' => 'admin'], function() { Route::get('/', function () { return redirect('/admin/home'); }); Route::get('login', 'Admin\LoginController@showLoginForm')->name('admin.login'); Route::post('login', 'Admin\LoginController@login'); }); //4) Admin ログイン後 Route::group(['prefix' => 'admin', 'middleware' => 'auth:admin'], function() { Route::post('logout', 'Admin\LoginController@logout')->name('admin.logout'); Route::get('home', 'Admin\HomeController@index')->name('admin.home'); });

Admin.php

<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class Admin extends Authenticatable { use Notifiable; protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ]; }

config/auth

<?php return [ 'defaults' => [ 'guard' => 'user', 'passwords' => 'users', ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], 'user' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], 'admins' => [ 'provider' => 'admins', 'table' => 'password_resets', 'expire' => 60, ], ], ];

Admin/LoginController

<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = '/admin/home'; public function __construct() { $this->middleware('guest:admin')->except('logout'); } public function showLoginForm() { return view('admin.login'); } protected function guard() { return Auth::guard('admin'); } public function logout(Request $request) { Auth::guard('admin')->logout(); $request->session()->flush(); $request->session()->regenerate(); return redirect('/admin/login'); } }

Admin/HomeController

<?php namespace App\Http\Controllers\Admin; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class HomeController extends Controller { public function __construct() { $this->middleware('auth:admin'); } public function index() { return view('admin.home'); } }

Viewはadminディレクトリを新たに作りそこに既存のログインページとHomeページをコピーしRouteの部分をadmin.xxxxxに変更してあります

試したこと

ガードの付け忘れかとも思ったのですが、上記の設定で問題ないように思えました。自分ひとりではどうにも手詰まりなのでここは確認したのか?この設定はどうなっているかなど何かコメント・ご指摘いただければと思います。

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

laravel5.5
php 7
homestead
mysql

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

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

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

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

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

guest

回答2

0

ベストアンサー

LoginControllerがuseしているトレイトのIlluminate\Foundation\Auth\AuthenticatesUsersのsendFailedLoginResponseメソッドが、
以下エラーの翻訳メッセージをtrans('auth.failed')で返しているところになります。

These credentials do not match our records.

よって、AuthenticatesUsersのattemptLoginメソッド辺りで、ガードやリクエストのフォームデータが意図した物か、ダンプして確認していくと解決にむかえるかと思います。
また、adminsテーブルのデータが存在するか、パスワードはRegisterControllerのcreateメソッドのようにbycriptヘルパー等を使ってハッシュに変換して保存されているか等も確認すると良いかと思います。

投稿2018/02/08 04:25

aro10

総合スコア4106

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

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

lkjgffh

2018/02/08 05:21

ご指摘くださいましてまことにありがとうございます。 パスワードがハッシュ化されていないことが原因でした。
guest

0

configの変更は反映されてますか?

php artisan config:cache

キャッシュの削除を試してみてください。

投稿2018/02/08 04:19

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問