2015-11-28 7 views
1

У меня проблема с моим специальным промежуточным программным обеспечением. Это не работает. Я зарегистрировал его в Kernel.php, только в $ routeMiddleware. Вот мой код:Laravel 5 Middleware Не работает

/** 
* The application's route middleware. 
* 
* @var array 
*/ 
protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'test' => \App\Http\Middleware\TestMiddleware::class 

]; 
} 

Вот мой контроллер Код:

/** 
* Middleware Activated 
*/ 
public function __constructor() 
{ 
    $this->middleware('test'); 
} 

и вот мой пользовательский код промежуточного слоя:

protected $auth; 
/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 
    if (!$this->auth->check()) 
    { 
     return redirect('/'); 
    } 
    return $next($request); 
} 

Когда я выйти из системы и введите URL

профиль/21

он показывает мне профиль пользователя с идентификатором 21. Я хочу предотвратить это с помощью промежуточного программного обеспечения, но он не будет работать для меня.

У кого-нибудь есть идея, как это сделать или где ошибка?

+0

мой файл выглядит следующим образом: /** * маршрута промежуточного приложения. * * @var массив */ защищен $ routeMiddleware = [ 'Auth' => \ App \ Http \ Middleware \ Authenticate :: класс, 'auth.basic' => \ Illuminate \ Auth \ Middleware \ AuthenticateWithBasicAuth :: class, 'guest' => \ App \ Http \ Middleware \ RedirectIfAuthenticated :: class, 'test' => \ App \ Http \ Middleware \ TestMiddleware :: класс ]; –

ответ

1

Чтобы убедиться, что промежуточное программное обеспечение запускается, поместите что-то наподобие die('middleware triggerd'); внутри функции обработки промежуточного программного обеспечения.

Я заметил, что у вас есть function __constructor() вместо function __construct().
Возможно, это проблема.

Если это вызовет к промежуточному, но вы по-прежнему имеют те же проблемы попробуйте заменить:
if (!$this->auth->check()) с if (!\Auth::check())

+0

Я положил dd(), но это не вызвало. Я не хочу использовать его в файлах маршрутов, потому что я думаю, что более элегантно использовать его в контроллере. Я не могу найти, где я ошибаюсь. Я пробовал с Auth :: check(), но все равно не работает. –

+0

Возможно, но я использую Route :: resource ('profile', 'ProfileController'); и я хочу использовать только и за исключением использования этого промежуточного программного обеспечения для определенных функций. –

+0

Спасибо, человек, это была проблема. –

Смежные вопросы