Использование пользовательского промежуточного программного обеспечения в контроллере
Я создал промежуточное по: php artisan make:middleware CheckUserStatus
В этом промежуточном программном обеспечении у меня есть:
namespace App\Http\Middleware;
use Closure;
class CheckUserStatus
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Auth()->check() AND Auth()->user()->status === 0) { // user is logged in but it is blocked
auth()->logout();
return redirect('/');
}
return $next($request);
}
}
Затем, один из моих контроллеров у меня есть:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Middleware\CheckUserStatus;
class productsController extends Controller
{
public function __construct () {
$this->middleware('auth');
$this->middleware('CheckUserStatus');
}
}
Это дает ReflectionException - Class CheckUserStatus does not exist
Что я делаю не так ?
У вопроса есть решение - Посмотреть?
Ответы - Использование пользовательского промежуточного программного обеспечения в контроллере / Use custom middleware in controller
Является ответом!

16.11.2019 08:04:14
Вам нужно зарегистрировать свое промежуточное программное обеспечение, если вы хотите ссылаться на него строковым ключом. Проверьте документы здесь.
Кроме того, вы можете использовать полное имя класса: попробовать CheckUserStatus::class
вместо 'CheckUserStatus'
.

16.11.2019 08:06:54
Необходимо использовать полное имя класса:
Любой:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class productsController extends Controller
{
public function __construct () {
$this->middleware('auth');
$this->middleware('\App\Http\Middleware\CheckUserStatus');
}
}
или
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Middleware\CheckUserStatus;
class productsController extends Controller
{
public function __construct () {
$this->middleware('auth');
$this->middleware(CheckUserStatus::class); //No quotes
}
}

Большое спасибо

16.11.2019 08:10:41
Вам нужно добавить промежуточное ПО в ядро.РНР
protected $routeMiddleware = [
'your_desire_name'=>\App\Http\Middleware\CheckUserStatus::class,
];
Помочь в развитии проекта: