0

我创建了一个带有护照认证的 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');
    });
});

它返回一个错误:

Symfony\Component\Routing\Exception\RouteNotFoundException
Route [login] not defined.

我发现错误发生在Middleware/Authenticate.php我不知道该怎么办。

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

我只想在重定向到http://api-auth.test/employees用于测试目的时显示 Employee 列表。这是我的EmployeeController

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

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

有什么帮助吗?谢谢。

4

1 回答 1

1

您需要应用“auth”中间件而不是“auth:api”

Route::group(['middleware' => 'auth'], function () {
    Route::get('/inbox', function () {
      return view('pages.employees');
    });
});
于 2020-10-13T07:54:22.173 回答