2016-01-15 1 views
1

Я создать новое имя промежуточного админпанельLaravel 5.2: Как использовать авторизацию в промежуточное программное

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Auth; 

class Adminpanel 
{ 
    public function handle($request, Closure $next) 
    { 
     if(Auth::user()->role == 'admin'){ 
      return $next($request); 
     }else{ 
      return redirect('admin/login'); 
     } 
    } 
} 

и зарегистрировать промежуточное программное обеспечение

protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
    'adminpanel' => \App\Http\Middleware\Adminpanel::class, 
]; 

и маршрут

Route::group(['middleware' => ['web','adminpanel']], function() { 
Route::get('/admin/dashboard/', 'admin\[email protected]'); 
// 

}) ;

, но когда я запустил, он спрашивает меня. Попытка получить свойство не-объекта, означает, что я не мог получить доступ к классу Auth здесь, может кто-нибудь сказать мне, что является ошибкой и как получить доступ к Auth Facade в промежуточном программном обеспечении.

и это мой код аутентификации

public function authenticate(Request $request) 
{ 
    if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password'), 'role' => 'admin'], $request->input('remember'))) 
    { 
     return redirect()->intended('admin/dashboard'); 
    } 
    else{ 
     return redirect('admin')->with('response',-1); 
    } 
} 

Благодаря

+0

Просто смотрите здесь. Я сделал то, что вам нужно. http://stackoverflow.com/questions/34614753/can-anyone-explain-laravel-5-2-multi-auth-with-example – imrealashu

+0

Я использую отдельную таблицу базы данных и поле роли для разных типов пользователей –

ответ

3

Это не означает, что вы не могли получить доступ к Auth класса. Это означает, что пользователь не аутентифицирован и Auth :: user() возвращает NULL.

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

if(Auth::check() && Auth::user()->role == 'admin'){ 
    return $next($request); 
} else { 
    return redirect('admin/login'); 
} 
+0

Пожалуйста, просмотрите мой код аутентификации, я добавляю выше –

+0

Что это изменяет? Является ли это частью вашего кода, вызывающего ошибку? –

+0

Нет, функция аутентификации успешно аутентифицирует пользователя и перенаправляет на страницу панели мониторинга, но auth в промежуточном программном обеспечении работает, как я упоминал выше. –