Маршрут Laravel в нескольких местах - PullRequest
0 голосов
/ 09 сентября 2018

Я хочу иметь тот же маршрут в промежуточном программном обеспечении auth:api, а также вне его.

Прямо сейчас, если я включу его в оба, принимается во внимание только одно из auth:api, даже если пользователь вошел в систему.

Есть ли способ, которым, если пользователь вошел в систему, он переходит к auth:api, а если нет, то выходит из промежуточного программного обеспечения?

Причина для этого заключается в том, что если пользователь вошел в систему, я хочу получить доступ к информации о пользователе, и для этого ему необходимо пройти через auth:api.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Пока вы включаете токен в запрос, вы сможете получить доступ к текущему User.

«Из коробки» Laravel установит охрану по умолчанию на web. Когда вы размещаете маршруты под промежуточным программным обеспечением auth, он устанавливает защиту по умолчанию равной тому, что передается промежуточному программному обеспечению, т. Е. Когда у вас есть auth:api, для этого запроса будет установлена ​​защита по умолчанию api.

Если вы хотите иметь возможность доступа к User без его промежуточного программного обеспечения auth:api, вам просто нужно будет четко указать, какой охранник следует использовать, например,

auth('api')->user(); // or Auth::guard('api')->user();

То же самое относится к check():

auth('api')->check(); // or Auth::guard('api')->check();

или если вы используете объект Request:

$request->user('api'); // or request()->user('api');
0 голосов
/ 09 сентября 2018

Невозможно иметь несколько одинаковых маршрутов в вашем приложении и работать независимо. Laravel будет соответствовать первому найденному на вашей карте маршрутов.

Создайте один маршрут и проверьте аутентификацию на вашем контроллере.

if (Auth::check()) {
    // The user is logged in...
}
...