Как аутентифицировать мою веб-страницу laravel после успешного входа в систему с использованием laravel passport

#php #laravel-7 #laravel-passport #laravel-api

#php #laravel-7 #laravel-passport #laravel-api

Вопрос:

Я создал laravel api с аутентификацией паспорта. У меня есть следующий интерфейс входа, который работает правильно.

 <script type="text/javascript">
        
    $("#loginfrm").on("submit", function(event){

        event.preventDefault();

        var username = $("#username").val();
        var password = $("#password").val();
        var dcookie = document.cookie;

        $.ajax({
            type: "POST",
            url: "http://api-auth.test/api/auth/login",
            headers: {
                "X-CSRF-TOKEN" : '{{ csrf_token() }}',
                "Authorization": "Bearer "   "{{ Cookie::get('laravel_token') }}",
            },
            data:{
                "_token": "{{ csrf_token() }}",
                "username": username,
                "password": password
            },
            complete: function (data) {
                if (data.responseJSON["authstat"] == "Authorized")
                {
                    window.location.href = "http://api-auth.test/employees";
                }
                else
                {
                    alert(data.responseJSON["authstat"]);
                }
            }
        });
    });
      
</script>
  

И мой API routes/api.php :

 Route::prefix('auth')->group(function(){
    Route::post('/register', 'AuthController@register'); 
    Route::post('/login', 'AuthController@login');
});
  

Использование моего собственного api:

Моя проблема в том, что когда мое приложение перенаправляет на "http://api-auth.test/employees" страницу, страница на самом деле не аутентифицируется. Ниже мой routes/web.php :

 Route::get('/inbox', function () {
    return view('pages.employees');
});
  

Затем я попытался инкапсулировать свой маршрут как то, что я ищу здесь, в stackoverflow:

 Route::group(['middleware' => 'auth:api'], function () {
    Route::get('/inbox', function () {
        return view('pages.employees');
    });
});
  

И он возвращает ошибку:

 SymfonyComponentRoutingExceptionRouteNotFoundException
Route [login] not defined.
  

Я обнаружил, что ошибка возникает, Middleware/Authenticate.php и я не знаю, что с ней делать.

 protected function redirectTo($request)
{
   if (!($request->expectsJson())) {
       return route('login');
   }
}
  

Я просто хочу отобразить список сотрудников, когда он перенаправляется для http://api-auth.test/employees целей тестирования. вот мой EmployeeController :

 public function index()
{
  $employee = Employee::all();

  return response()->json([
      "success" => true,
      "message" => "Employee List",
      "data" => $employee
  ]);
}
  

Любая помощь? Спасибо.

Ответ №1:

Вам необходимо применить промежуточное программное обеспечение «auth», а не «auth: api»

 Route::group(['middleware' => 'auth'], function () {
    Route::get('/inbox', function () {
      return view('pages.employees');
    });
});
  

Комментарии:

1. есть ли способ устранить эту ошибку? «Symfony Component Routing Exception RouteNotFoundException Маршрут [входа] не определен». Я уже пробовал ваше предложение, но все равно возвращает и выдает ошибку.