Laravel 5.2: 如何在中间件中使用auth
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');
//
});
但是当我 运行 时,它问我 Trying to get 属性 of non-object,这意味着我无法在此处访问 Auth class,有人可以告诉我什么是错误以及如何在中间件中访问 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 class。这意味着,该用户未通过身份验证 Auth::user() returns NULL.
通过为该路由使用 auth 中间件,确保只有经过身份验证的用户才能访问您的路由,或者首先检查用户是否已通过身份验证:
if(Auth::check() && Auth::user()->role == 'admin'){
return $next($request);
} else {
return redirect('admin/login');
}
我创建了一个名为 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');
//
});
但是当我 运行 时,它问我 Trying to get 属性 of non-object,这意味着我无法在此处访问 Auth class,有人可以告诉我什么是错误以及如何在中间件中访问 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 class。这意味着,该用户未通过身份验证 Auth::user() returns NULL.
通过为该路由使用 auth 中间件,确保只有经过身份验证的用户才能访问您的路由,或者首先检查用户是否已通过身份验证:
if(Auth::check() && Auth::user()->role == 'admin'){
return $next($request);
} else {
return redirect('admin/login');
}