[英]Laravel 5.2: How to use auth in middleware
我創建了一個新的中間件名稱Adminpanel
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\Dashboard@index');
//
});
但是當我運行時,它問我試圖獲取非對象的屬性,意味着我無法訪問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);
}
}
謝謝
這並不意味着您無法訪問Auth類。 這意味着,該用戶未經過身份驗證, Auth :: user()返回NULL 。
確保只有經過身份驗證的用戶可以通過使用該路由的auth中間件來訪問您的路由,或者首先檢查用戶是否經過身份驗證:
if(Auth::check() && Auth::user()->role == 'admin'){
return $next($request);
} else {
return redirect('admin/login');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.