在Laravel上,默认情况下,api中间件组不包括StartSession或VerifyCsrfToken。相反,它依赖于auth:api,它为每个请求期望一个api_token值。
在我的例子中,Vue前端使用后端API (/api/...)上的Axios发出请求。由于用户是在前端登录的,所以它可以使用与web部件相同的中间件。
我应该如何配置我的Kernel.php/$middlewareGroups/api以同时使用api_token和现有的用户会话?
发布于 2020-09-25 22:11:28
你把你的Vue应用程序组件保存在laravel应用程序中。这关心的是保持会话。在布局的头中添加csrf令牌
<meta name="csrf-token" content="{{ csrf_token() }}">如果您使用axios文档他说,它将自动添加。
默认情况下,带有令牌的Api身份验证是打开的(据我所知)。你得多走几步。
<script>
window.Laravel = {!! json_encode([
'apiToken' => auth()->user()->api_token ?? null,
]) !!};
</script>在html中显示它可能有些问题,但由于它是一个单块应用程序,而且您必须登录才能将您的组件与api连接起来--这可能是可以的。
window.axios.defaults.headers.common['Authorization'] = 'Bearer ' + Laravel.apiToken;我希望它能帮到你。如果有人反对这种做法,我很乐意听到批评。我不喜欢在js脚本中打印php变量的这种方式。也许还有更优雅的解决方案。
编辑:还有桑太姆用于简单的api身份验证
https://stackoverflow.com/questions/64071269
复制相似问题