Php Laravel应用程序中Ajax/Axios请求的API身份验证?

Php Laravel应用程序中Ajax/Axios请求的API身份验证?,php,laravel,api,authentication,Php,Laravel,Api,Authentication,默认情况下,在Laravel上,api中间件组不包括StartSession或VerifyCsrfToken。相反,它依赖于auth:api,它期望每个请求都有api\u令牌值 在我的例子中,Vue前端在后端的API上使用Axios发出请求(/API/…)。因为用户是在前端登录的,所以它可以简单地使用与web部分相同的中间件 我应该如何配置我的Kernel.php/$middlewareGroups/api以将api与api\u令牌和现有用户会话一起使用?您可以将Vue应用程序组件保留在lara

默认情况下,在Laravel上,
api
中间件组不包括
StartSession
VerifyCsrfToken
。相反,它依赖于
auth:api
,它期望每个请求都有
api\u令牌

在我的例子中,Vue前端在后端的API上使用Axios发出请求(
/API/…
)。因为用户是在前端登录的,所以它可以简单地使用与
web
部分相同的中间件


我应该如何配置我的
Kernel.php
/
$middlewareGroups
/
api
以将api与
api\u令牌和现有用户会话一起使用?

您可以将Vue应用程序组件保留在laravel应用程序中。这关系到会话的保持。在布局的头部中添加:

我希望它能帮助你。如果有人反对这种做法,我很乐意听到批评。我不喜欢这种在js脚本中打印php变量的方式。也许有更优雅的解决方案

编辑:
还有一个简单的api身份验证

Si这意味着任何人都可以从客户端浏览器中窃取api_密钥,并在任何地方对api拥有完全权限?如果他不登录,他不会窃取任何东西。我认为是这样。它只是与API通信,或者在登录时将令牌存储在cookie中
<meta name="csrf-token" content="{{ csrf_token() }}">
    <script>
        window.Laravel = {!! json_encode([
            'apiToken' => auth()->user()->api_token ?? null,
        ]) !!};
    </script>
window.axios.defaults.headers.common['Authorization'] = 'Bearer ' + Laravel.apiToken;