【问题标题】:Nuxt3 + Laravel sanctumNuxt3 + Laravel 密室
【发布时间】:2023-01-26 18:08:17
【问题描述】:
当后端由 laravel sanctum 保护时,如何从 api 获取数据?
当我使用useFetch 时,我没有得到任何数据。
const {data: cat} = await useFetch('/api/categories')
Laravel 文档告诉使用 axios 但在 nuxt3 axios 模块中不起作用。
有人可以帮忙吗?
我尝试使用 useFetch 方法获取 csrf cookie 但它不起作用
const {data} = await useFetch('/sanctum/csrf-cookie', {method: 'get'}).then(Response => {
})
【问题讨论】:
标签:
laravel
vue.js
nuxt.js
vuejs3
nuxtjs3
【解决方案1】:
要在使用圣所时获取数据,
您已经通过路由 /sanctum/csrf-cookie 获得了上面的 csrf 令牌。
然而,这还不够。
对于您想要发出的每个安全请求,您需要发送一个使用 sanctum 生成的令牌。
通常,对于应用程序,您将遵循以下步骤
- 登录用户然后使用
$user->createToken('TokenName');
- 生成令牌后,您可以在应用程序中使用 cookie 保存此令牌。每次您向您的应用程序发出后续请求时,简单地发送令牌是您的请求标头作为不记名令牌。
标题将是这样的
"Authorization": "Bearer " + TOKEN_VALUE;
一切都取决于您发送请求的方式。
更多文档可用On this loink on Laravel Documentation
另外,确保你有
Accept: Application/json
也作为标题的一部分。
如果您不在标头中发送该令牌,您的请求将给您一个错误“未验证”。
希望这可以帮助。