#laravel #authentication
#laravel #аутентификация
Вопрос:
Я использую 2 маршрута, один для loginUsingId(1), а второй для проверки, зарегистрирован ли пользователь. Когда вы пытаетесь увидеть Auth::id(), он всегда равен нулю.
//My Routes
Route::get('/login', [AppHttpControllersUserController::class,'login']);
Route::get('/test_login', [AppHttpControllersUserController::class, 'getUser']);
Это методы в
пространстве имен UserController App Http Controllers;
use AppHttpMiddlewareAuthenticate;
use AppModelsUser;
use AppProvidersRouteServiceProvider;
use IlluminateAuthEventsRegistered;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
public function login()
{
$auth = Auth::loginUsingId(3);
return var_dump($auth); // <--- here return 3
}
public function getUser()
{
return response(['user'=>Auth::id()]);
}
Комментарии:
1. Вы не вошли в систему пользователя
2. не могли бы вы объяснить, пожалуйста, @sta
3. Я проверил это с
Laravel 8.25
помощью . После входа вAuth::loginUsingId(1)
Auth::id()
систему возвращаетсяnull
, если перейти на другую страницу. Этого не произойдет, если я войду в систему вручную. Похоже на ошибку4. Хорошо, @sta спасибо за ответ. Что вы имеете в виду под «войти вручную»?
5. версия laravel 8.19
Ответ №1:
для работы необходимо применить промежуточное программное обеспечение Auth::user()
Route::get('/test_login', [AppHttpControllersUserController::class, 'getUser'])->middleware('auth');
затем попробуйте
Комментарии:
1. с помощью промежуточного программного обеспечения (‘auth’) он перенаправляет меня на маршрут с именем ‘login’ без контроллера передачи данных
2. это означает, что вы не входите в систему
3. да, конечно, но я не понимаю почему, потому что я использовал $auth = Auth::loginUsingId(3); возвращает var_dump($ auth); и затем он вернул 3
Ответ №2:
Если вы не хотите использовать промежуточное ПО аутентификации по умолчанию, это не сработает. Хотя, помните, что есть auth()->user()
метод, который вы можете попробовать вместо этого; это более удобно, поскольку вам не нужно импортировать какую-либо модель, чтобы использовать его.
Комментарии:
1. означает, что никто не вошел в систему