【问题标题】:cannot take data from DB and use it in VUE script无法从数据库中获取数据并在 VUE 脚本中使用
【发布时间】:2020-10-11 08:02:31
【问题描述】:

我尝试从数据库中获取数据并在 VUE 脚本中使用它,但在控制台中我看到了消息

GET http://lara7.test/api/furnitura 401 (Unauthorized)

在 Chrome devtools 网络选项卡中,我看到了响应

家具

{"message":"Unauthenticated."}

这是我的代码

routes\api.php

Route::middleware('auth:api')->group( function () {
  Route::resource('furnitura', 'API\FurnituraController');
});

App\Http\Controllers\API\BaseController

namespace App\Http\Controllers\API;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

abstract class BaseController extends Controller
{
    public function sendResponse($result, $message)
    {
      $response = [
            'success' => true,
            'data'    => $result,
            'message' => $message,
        ];

        return response()->json($response, 200);
    }

    public function sendError($error, $errorMessages = [], $code = 404)
    {
      $response = [
            'success' => false,
            'message' => $error,
        ];

        if(!empty($errorMessages)){
            $response['data'] = $errorMessages;
        }

        return response()->json($response, $code);
    }
}

App\Http\Controllers\API\FurnituraController

namespace App\Http\Controllers\API;

class FurnituraController extends BaseController
{
    public function index()
    {
        $furnitura = Furnitura::all();

        return $this->sendResponse($furnitura->toArray(), 'Furnitura retrieved successfully.');
    }
}

资源\js\app.js

window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
...
...
mounted() {
    console.log("Vue ROOT instance mounted");
    axios.get('/api/furnitura').then(response => this.furnitura = response.data);
    console.log(this.furnitura);
},

【问题讨论】:

    标签: json laravel vue-component


    【解决方案1】:

    也许,您没有通过 auth: API 中间件。您正在从中间件获得 401。

    • 也许您使用令牌进行用户验证或 API 用户验证令牌丢失

    【讨论】:

    • 在哪里可以找到这个令牌?我还没有这个项目的用户管理。用户表为空。我的项目中有用户模型,但它只是在安装 Laravel 时默认创建的。
    • 所以我没有为自己创建任何关于令牌和用户验证的内容。
    • 所以从你的路由中删除中间件('auth:api')-> 或者只写 Route::resource('furnitura', 'API\FurnituraController');
    • 你能把我的答案写成紧急投票吗?它让我受到启发。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    相关资源
    最近更新 更多