Почему Laravel Auth Facade не работает в контроллере? - PullRequest
1 голос
/ 08 мая 2019

У меня есть контроллер с методом store(), вызываемым из компонента Vue. Он работает нормально, так как я могу успешно передавать данные на мой контроллер из компонента Vue. Но я пытаюсь получить личность аутентифицированного пользователя, и по какой-то причине я не могу сделать это внутри метода контроллера. В настоящее время я проверяю, существует ли аутентифицированный пользователь (что должно быть, аутентификация установлена, и когда я проверяю интерфейс пользователя в шаблоне блейда auth()->check() возвращает значение true).

Контроллер

public function store(Request $request)
{
    $player = Player::create([
        'first_name' => $request['first_name'],
        'last_name' => $request['last_name'],
        'dob' => $request['dob'],
    ]);

    If (auth()->check()) {
        Mail::to(auth()->user())->send(new PlayerCreated($player));
    }
}

Я также импортирую Illuminate\Support\Facades\Auth,, поэтому проблема не в том, чтобы не использовать фасад Auth. Но по какой-то причине это не работает.

Мне интересно, связано ли это с тем, что это API-маршрут? Я не могу понять, почему я все еще не смогу получить доступ к аутентифицированному пользователю в моем контроллере. Любые идеи о том, почему это происходит и как это исправить?

Ответы [ 3 ]

0 голосов
/ 08 мая 2019

В вашем контроллере добавьте в начало файла контроллера

use Auth;

, тогда вы можете использовать аутентификацию, используя электронную почту, например

$email = Auth::user()->email;

Я предполагаю, что вы используете laravel5.5

0 голосов
/ 09 мая 2019

В вашем app/config.php проверьте драйвер, который вы используете для аутентификации. Вы видите, что пытаетесь вызвать Auth фасад для извлечения пользователя с помощью метода контроллера API.

Вместо этого вам придется анализировать токен, отправленный с заголовком авторизации, чтобы получить аутентифицированного пользователя. Это зависит от вашего драйвера аутентификации API.

например, в JWT вы можете получить пользователя через:

$user = JWTAuth::parseToken()->authenticate()

или вы можете попробовать

$user = Auth::guard('api')->user();
0 голосов
/ 08 мая 2019

Убедитесь, что вы загружаете промежуточное ПО на этом маршруте!

Route::group(['namespace' => 'Your namespace', 'middleware' => ['web']], function () {
    // your routes
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...