Auth::check всегда возвращает false, а Auth::attempt true в Laravel 10.10. ⇐ Php
-
Гость
Auth::check всегда возвращает false, а Auth::attempt true в Laravel 10.10.
У меня есть 2 файла Blade: login.blade.php и dashboard.blade.php. В LoginController я использую Auth::attempt() для аутентификации пользователя и перенаправления на панель управления в случае успеха.
Для панели мониторинга у меня есть еще одно промежуточное программное обеспечение для проверки статуса входа. После того, как я успешно вошел в систему и перешел на панель управления, я вернулся на страницу входа. Это означает, что статус входа в систему является ложным.
В функции login. Если я попробую вернуть Auth::user() сразу после использования attempt, это сработает. Но при проверке промежуточного программного обеспечения или другого маршрута Auth::check() возвращает false.
web.php
Route::group(['namespace' => 'App\Http\Controllers'], function () { Route::get('login', 'PublicController@index')->name('login'); Route::post('login', 'PublicController@login')->name('login.post'); }); Route::group(['namespace' => 'App\Http\Controllers', 'middleware' => ['auth.login']], функция () { Route::get('/', 'AdminController@index')->name('dashboard.index'); }); функция входа в контроллер
публичная функция входа в систему (Запрос $request) { $data = $request->validate([ 'имя пользователя' => 'обязательно', 'пароль' => 'обязательно' ]); если (Auth:: попытка ($ данные)) { $request->session()->regenerate(); if(!$request->login_as || Auth::user()->role != $request->login_as) { return back()->withErrors(['message' => 'False!'])->withInput(); } return redirect()->intended(route('dashboard.index')); } return back()->withErrors(['message' => 'False!'])->withInput(); } Промежуточное ПО AuthCheck.php — я добавил это промежуточное ПО в $middlewareAliases
класс AuthCheck { публичный дескриптор функции (запрос $request, замыкание $next) { если(!Auth::check()) { вернуть перенаправление ('логин'); } вернуть $next($request); } } Конфигурация auth.php и конфигурация сеанса
//Конфигурация аутентификации 'поставщики' => [ 'пользователи' => [ 'водитель' => 'красноречивый', 'модель' => Приложение\Модели\Аккаунт::класс, ] ] //Конфигурация сеанса { "драйвер": "файл", "время жизни": "120", «expire_on_close»: ложь, «зашифровать»: ложь, "files": "/Users/chanhhuynh/Documents/Freelance/rental- управление/хранилище/фреймворк/сессии", «соединение»: ноль, "таблица": "сеансы", «магазин»: ноль, "лотерея": [ 2, 100 ], "cookie": "laravel_session", "путь": "/", «домен»: ноль, «безопасный»: ноль, «http_only»: правда, "same_site": "слабый" } Я искал и пробовал какой-то способ, но все равно не получилось. Есть ли какое-нибудь решение, чтобы это исправить? Спасибо
У меня есть 2 файла Blade: login.blade.php и dashboard.blade.php. В LoginController я использую Auth::attempt() для аутентификации пользователя и перенаправления на панель управления в случае успеха.
Для панели мониторинга у меня есть еще одно промежуточное программное обеспечение для проверки статуса входа. После того, как я успешно вошел в систему и перешел на панель управления, я вернулся на страницу входа. Это означает, что статус входа в систему является ложным.
В функции login. Если я попробую вернуть Auth::user() сразу после использования attempt, это сработает. Но при проверке промежуточного программного обеспечения или другого маршрута Auth::check() возвращает false.
web.php
Route::group(['namespace' => 'App\Http\Controllers'], function () { Route::get('login', 'PublicController@index')->name('login'); Route::post('login', 'PublicController@login')->name('login.post'); }); Route::group(['namespace' => 'App\Http\Controllers', 'middleware' => ['auth.login']], функция () { Route::get('/', 'AdminController@index')->name('dashboard.index'); }); функция входа в контроллер
публичная функция входа в систему (Запрос $request) { $data = $request->validate([ 'имя пользователя' => 'обязательно', 'пароль' => 'обязательно' ]); если (Auth:: попытка ($ данные)) { $request->session()->regenerate(); if(!$request->login_as || Auth::user()->role != $request->login_as) { return back()->withErrors(['message' => 'False!'])->withInput(); } return redirect()->intended(route('dashboard.index')); } return back()->withErrors(['message' => 'False!'])->withInput(); } Промежуточное ПО AuthCheck.php — я добавил это промежуточное ПО в $middlewareAliases
класс AuthCheck { публичный дескриптор функции (запрос $request, замыкание $next) { если(!Auth::check()) { вернуть перенаправление ('логин'); } вернуть $next($request); } } Конфигурация auth.php и конфигурация сеанса
//Конфигурация аутентификации 'поставщики' => [ 'пользователи' => [ 'водитель' => 'красноречивый', 'модель' => Приложение\Модели\Аккаунт::класс, ] ] //Конфигурация сеанса { "драйвер": "файл", "время жизни": "120", «expire_on_close»: ложь, «зашифровать»: ложь, "files": "/Users/chanhhuynh/Documents/Freelance/rental- управление/хранилище/фреймворк/сессии", «соединение»: ноль, "таблица": "сеансы", «магазин»: ноль, "лотерея": [ 2, 100 ], "cookie": "laravel_session", "путь": "/", «домен»: ноль, «безопасный»: ноль, «http_only»: правда, "same_site": "слабый" } Я искал и пробовал какой-то способ, но все равно не получилось. Есть ли какое-нибудь решение, чтобы это исправить? Спасибо
Мобильная версия