Как правильно использовать Auth: user () в промежуточном программном обеспечении? - PullRequest
1 голос
/ 19 июня 2019

Мне нужно перенаправить на выход из системы, если у пользователя есть роль «учитель».Я пытался сделать это с промежуточным программным обеспечением, но я не знаю, в чем здесь проблема.Там написано:

Эта страница не работает. 127.0.0.1 перенаправляет вас слишком много раз.

, иногда Auth: user () имеет значение nullбез причины.

Промежуточное ПО:

public function handle($request, Closure $next)
    {
        if (Auth::user()->role == User::ROLE_TEACHER) {
            return redirect()->route('logout');
        }
        return $next($request);
    }

Ядро:

protected $routeMiddleware = [
       .....
        'noTeacher' => \App\Http\Middleware\RedirectIfTeacher::class,

    ];

HomeController:

$this->middleware('noTeacher', ['only' => 'index']);

Маршруты:

Route::post('login', 'Auth\LoginController@login');
Route::get('logout', 'Auth\LoginController@logout')->name('logout');

Route::group(['middleware' => ['auth']], function () {
...
});

1 Ответ

0 голосов
/ 19 июня 2019

Можете ли вы попробовать это.Его MiddleWare

class CheckPaAuth {
    public function handle($request, Closure $next) {
        if (Auth::check()) {
            if (Auth::user()->role == "Parent") {
                return $next($request);
            } else {
                auth()->logout();
                return redirect("login")->withErrors(['Login failed,please try again!']);
            }
        } 
        return redirect("login")->withErrors(['Please first login.']);
    }
}

И его Kernel.php

protected $routeMiddleware = [
    'AuthParent' => \App\Http\Middleware\CheckPaAuth::class,
];

И его web.php

Route::group(['middleware' => ['AuthParent'], 'prefix' => 'parent'], function() {
    Route::get('profile', 'UserController@edit');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...