ユーザーが認証され、電子メールが/ adminページにアクセスするための特定の電子メールである場合にのみ、カスタムミドルウェアを作成したいと考えています。カスタムミドルウェア - 'Too Many Redirects' - Laravel
..私は私のカスタムルートを指定してリダイレクトが、それは常にあまりにも多くのリダイレクトを言うとき、けれども
短い説明
。中- ユーザーがログイン - > /ホームにリダイレクト。
- ユーザーが/ adminにアクセスしようとしていて、そのメールがミドルウェアで指定されたものと違う場合は、/ homeにリダイレクトします。
- そのtrueの場合、私のミドルウェアが 'admin.verify'
routesファイルと呼ばれる
Route::get('/admin', '[email protected]')->name('admin.index');
AdminController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AdminController extends Controller
{
public function __construct(){
$this->middleware(['auth', 'admin.verify']);
}
public function index(){
return view('admin.test');
}
}
ミドルウェア:
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::User()->email == '[email protected]') {
return $next($request);
} else {
return redirect()->route('home');
}
マイホームルート:
GET|HEAD | home | home| App\Http\Controllers\[email protected] | web,auth
ホームコントローラ:
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('home');
}
}
あなたの 'home'ルートの定義を表示してください。 – Camilo
あなたのミドルウェアはコントローラ内にないルートファイル内にあるはずです – Option
@Optionなぜそれを言うのですか? [ミドルウェアをコントローラに追加する](https://laravel.com/docs/5.5/controllers#controller-middleware)が有効です。 – Camilo