#php #laravel #laravel-middleware
#php #laravel #laravel-промежуточное программное обеспечение
Вопрос:
Проблема проста, когда пользователь имеет в столбце таблицы `isBlocked` значение 1, не может войти в систему. Но в моем случае все еще может. Я надеюсь, что кто-нибудь найдет проблему, которую я не вижу
AppMiddlewareActiveUser.php
<?php
namespace AppHttpMiddleware;
use IlluminateSupportFacadesAuth;
use Validator,Redirect,Response;
use Closure;
class ActiveUser
{
public function handle($request, Closure $next)
{
if (auth()->check())
{
if (auth()->user()->isBlocked == 1)
{
auth()->logout();
return response(view('expired'));
}
}
return $next($request);
}
}
AppHttpKernel.php
protected $routeMiddleware = [
....
'active_user' => AppHttpMiddlewareActiveUser::class,
];
web route
Route::group(['middleware' => ['active_user']], function(){
Route::get('user/{param1}amp;={param2}', 'AuthController@index')->name('login');
});
Комментарии:
1. Ваш код вообще попадает в
auth()->check()
условие? Я бы предложил добавить некоторыеdd()
и посмотреть, какое условие не выполняется. Другим предложением было бы очистить кэш вашего приложения и маршрута2. @zlatan вы правы
auth()->check()
, не работает. Я заменяю на$user = $request->user();
иif (!$user || $user->isBlocked == 1)
что-то делаю. большое спасибо
Ответ №1:
Я думаю, что проблема в вашем состоянии:
if (Auth::user() amp;amp; Auth::user()->isBlocked == 1) {
auth()->logout();
// you can also abort that user from accessing web pages
// App::abort(401);
return response(view('expired'));
} else {
return $next($request);
}