2017-11-01 3 views
0

사용자가 인증되고 전자 메일이/admin 페이지에 액세스 할 수있는 특정 전자 메일 인 경우에만 사용자 지정 미들웨어를 만들고 싶습니다.사용자 지정 미들웨어 - '너무 많은 리디렉션'- Laravel

.. 나는 내 사용자 지정 경로를 지정한 다음 리디렉션이 항상 너무 많은 리디렉션을 말할 때, 비록

짧은 설명

.

  1. 사용자 로그가>/home으로 리디렉션됩니다. (작동)
  2. 사용자가/admin에 액세스하려고 시도하고 해당 전자 메일이 미들웨어에 지정된 것과 다르면/home으로 리디렉션합니다.
  3. 하면 진정한 그들을하자에서/관리자
  4. 내 미들웨어는 'admin.verify'

    경로 파일이라고

:

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'); 
    } 
} 
+0

'홈'경로의 정의를 보여줍니다. – Camilo

+1

미들웨어가 컨트롤러에없는 경로 파일 내에 있어야합니다. – Option

+0

@Option 왜 그런 말을합니까? [컨트롤러에 미들웨어 추가] (https://laravel.com/docs/5.5/controllers#controller-middleware)가 유효합니다. – Camilo

답변

1

사용 $this->middleware ('admin.verify') 대신 $this->middleware(['auth, admin.verify]');. 관리자 미들웨어와 생성자가 모두 사용자가 인증되었는지 확인하기 때문에 너무 많은 리디렉션 오류가 발생합니다.

+0

나는 그 원래했다, 여전히 아무것도하지 않았다. 같은 오류. – Pegasus

+0

사용자가 인증되면 미들웨어를 확인하는 데 문제가있는 이유는 무엇입니까? – Camilo

+0

그것은 시험을위한 것이 었습니다. 그것에 대해 걱정하지 마십시오. 나는 그것을 제거했습니다! – Pegasus

관련 문제