【问题标题】:get user laravel api axios获取用户 laravel api axios
【发布时间】:2021-04-26 07:56:49
【问题描述】:

我使用 vue 和 axios 创建了 laravel cms。

我想获取发送帖子请求的当前用户

所以我遵循 laravel api 文档并采用这种结构

// bootstrap.js

window.axios = require('axios');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
window.axios.defaults.headers.common['Authorization'] = `Bearer ${window.api_token}`;


// vue component file

axios.post('/api/v1/person', this.person)
.then(data => {
            this.$emit('added', data.data);
            this.person.id = data.data.data.id
});



// Route in api.php
Route::prefix('v1')->name('api.')->group(function () {

    /**  Person Routes */
    Route::prefix('person')->namespace('Person')->name('person.')->group(function(){
        Route::post('/', 'PersonController@index');

});

});

//in laravel controller i retrun

return response()->json(auth('api')->user());

但我得到了这个结果

即使我检查了控制台标题和 Authorization 标题设置正确

我可以获取所有的帖子数据,但 laravel 不会将用户传递给我

我还在 github 中创建了这个项目的存储库 如果你想可以点击这个链接

https://github.com/mohammadZx/crm

【问题讨论】:

  • 你能显示路线,特别是你定义 api auth 中间件的地方吗?
  • 这似乎是正确的,你在配置中设置了什么身份验证?
  • 我在身份验证配置中没有任何变化。
  • 你能看到我的 github 仓库吗?

标签: php laravel axios


【解决方案1】:

documentation 中声明您必须设置正确的防护才能使 Passport 正常工作。更新auth.php 配置。

'guards' => [
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

【讨论】:

  • 谢谢,但我不想使用 laravel 护照
  • 我可以在没有任何软件包的情况下解决这个问题。只是在 auth.php 中设置了一些更改
  • 你用的是什么API令牌?
  • 无论如何它似乎有所帮助,请告诉我你改变了什么然后我更新答案,以便我们可以帮助其他人查看这个问题:)
  • 是的。只需在 auth.php 中设置 ``` 'hash' => false ```
【解决方案2】:

默认情况下,laravel 尝试通过散列令牌查找用户,因此 laravel 返回 null 因为您的用户 api 令牌未散列。因此,如果您将 auth.php 设置更改为不搜索哈希 api_tokens,此问题将得到修复


'guards' => [
    'api' => [
        'driver' => 'token',
        'provider' => 'users',
        'hash' => false
    ],
],




【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习
  • 我添加了一些解释来解决这个问题
猜你喜欢
  • 2019-10-01
  • 2020-06-30
  • 1970-01-01
  • 2018-07-11
  • 2020-12-27
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
相关资源
最近更新 更多