首页 > 解决方案 > 使用 API 和隐藏响应的最佳方式是什么

问题描述

我有一个基于 Laravel 和 Vue 的 SPA 网站。

我正在使用 axios 来获得响应并且一切正常。

大部分数据是供应商、类别和产品,其中没有任何敏感信息,但产品有一些我需要在前端使用的数据,但我不希望我的竞争对手掌握这些数据。

我该怎么做?所以我得到了数据,但它也被隐藏了?

所以我想可能是我加密它然后解密它但不确定这是否是正确的方法

{

"Products": [
    {
        "ID": 9950,
        "VID": 114,
        "Name": "TBH Special Burger ",
        "Category": 224,
        "Description": "",
        "Image": "",
        "Price": "250",
        "DisplayPrice": 0,
        "DealPrice": 0,
        "Percentage": "15",
        "Cust_Percentage": "0.00",
        "DateTime": "2018-10-08 19:03:40",
    },
],
}

在上述响应中,我仅尝试保护百分比相关数据。

标签: laravelapivue.js

解决方案


你正在寻找Laravel 护照

Laravel 使用 Laravel Passport 使 API 身份验证变得轻而易举,它在几分钟内为您的 Laravel 应用程序提供了完整的 OAuth2 服务器实现。

使用Passport,只有经过身份验证的用户才能通过 API 访问您的数据。阅读上面链接中的文档并尝试一下。

如果未经过身份验证的用户通过在浏览器中键入 url 来访问您的 api,他将得到以下响应:

{
    "message": "Unauthenticated"
}

使用 JavaScript 使用 API

Laravel 提供了一个中间件,允许您从 JS 应用程序中使用您的 api。从文档:

通常,如果您想从 JavaScript 应用程序使用 API,则需要手动向应用程序发送访问令牌,并将其与每个请求一起传递给您的应用程序。但是,Passport 包含一个可以为您处理此问题的中间件。您需要做的就是将CreateFreshApiToken中间件添加到文件中的 Web 中间件组中app/Http/Kernel.php

'web' => [
   // Other middleware...
   \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],

希望能帮助到你。


推荐阅读