2016-11-12 8 views
0

Мне нужно проверить, что пользователь зарегистрировался и проверяет свое имя пользователя в моем промежуточном программном обеспечении, которое проверяет, являются ли они администратором или не ограничивает доступ к определенной странице. Как получить свое имя пользователя?Проверить имя пользователя в Laravel Middleware

Использование Auth :: user() дает мне ошибку из другого промежуточного программного обеспечения.

ErrorException in VerifyCsrfToken.php line 136: 
Trying to get property of non-object 

Маршрут

Route::get('admin', ['middleware' => 'admin', function() { 
    echo "You're an admin!"; 
}]); 

Middleware

class VerifyAdmin 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 
      if (Auth::user()->username == "enayet123") 
       return $next($request); 
    } 
} 
+0

Можете ли вы показать свой файл маршрутов! –

+0

Я действительно не понимаю, почему файл маршрута повлиял бы на это? –

+1

Какова ваша версия для laravel? –

ответ

0

Вы должны вернуть

return $next($request); 

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

Ваш код должен выглядеть следующим образом:

class VerifyAdmin 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 
      if (Auth::user()->username == "enayet123") { 
       // Do the thing you want ... (return or redirect to somewhere else) 
       redirect()->route('homepage'); 
      } 
      return $next($request); 
    } 
} 

Вы должны всегда return $next($request), которые необходимо передать код/​​запрос от конкретного промежуточного

+0

Средство промежуточного уровня предназначено для передачи запроса на следующее промежуточное программное обеспечение, если его имя пользователя «enayet123», поэтому у меня оно такое. Если проверка не удалась, пользователь должен быть перенаправлен на домашнюю страницу '/' –

+0

@EnayetHussain - Проверьте обновленный код выше и попытайтесь его реализовать, он должен решить вашу проблему –

0

Для того, чтобы получить пользователям данные, такие как имя пользователя/по электронной почте вам нужно использовать $ request-> пользователя() вместо Auth :: пользователя()

затем вы должны проверить, если пользователь является администратором, создав метод в модели пользователя и называя это в промежуточном программном обеспечении

class VerifyAdmin 
{ 
    public function handle($request, Closure $next, $guard = null) 
    { 
     $user = $request->user(); 
     if ($user && $user->isAdmin()) { 
      return $next($request); 
     } 
     return redirect('/'); 
    } 
} 

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

  • Нет связанных вопросов^_^