Laravel Auth возвращает значение null

#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. означает, что никто не вошел в систему