【问题标题】:Where to store Laravel Passport "client_secret" in VueJS在 VueJS 中存储 Laravel Passport“client_secret”的位置
【发布时间】:2019-10-24 17:49:13
【问题描述】:

我对 VueJS 有点陌生,我只使用 Laravel 作为 API,而 VueJS 作为一个单独的项目。

在我的 App.vue 中,我有以下设置:

http://api.com是我的虚拟主机!

<script>
import axios from 'axios';
export default {
  data () {
    return {
    }
  },
  created() {
    const postData = {
      grant_type: "password",
      client_id: 2,
      client_secret: 'MvEyvm3MMr0VJ5BlrJyzoKzsjmrVpAXp9FxJHsau',
      username: 'mail@gmail.com',
      password: '**********',
      scope: ''
    }
    axios.post('http://api.com/oauth/token', postData)
    .then(response => {
      const header = {
        'Accept': 'application/json',
        'Authorization': 'Bearer ' + response.data.access_token,
      };
      axios.get('http://api.com/api/user', { headers: header })
      .then(response => {
        console.log(response.data)
      })
    })
  }
}
</script>

但是这个文件对前端是完全可见的,由于安全原因,这并不好。

我做了什么,我在 Laravel 中创建了一条新路由 Route::post('get_client_creds', MyController@index);,然后从 axios 发出请求:

axios.post('http://api.com/get_client_creds')
    .then(response => {
        this.client_secret = response.client_secret;
});

然后我认为任何人也可以使用 Postman 访问该路线,或者可以通过控制台使用 axois,所以有人可以给我一些关于在哪里存储这些秘密的建议吗??? 提前致谢!

【问题讨论】:

    标签: javascript laravel vue.js axios


    【解决方案1】:

    vue指定配置设置有两种不同的方式

    #1Vue.js非cli项目,可以使用src/config.js

    1. 新建文件src/config.js并添加如下
      export const API_CLIENT_ID = '123654';
    
    1. 要使用它,请尝试如下导入:
    import { API_CLIENT_ID } from '../config'
    
    
    // in your code
    console.log(API_CLIENT_ID);
    

    #2对于 Vue CLi 项目,请按照以下步骤操作。

    您必须使用.env 文件保存配置变量。

    它的结构可以像

    
    .env                # loaded in all cases
    .env.local          # loaded in all cases, ignored by git
    .env.[mode]         # only loaded in specified mode
    .env.[mode].local   # only loaded in specified mode, ignored by git
    
    

    这是指定变量的方法。

    FOO=bar
    API_CLIENT_ID=123456
    

    您可以将其用作:

    console.log(process.env.API_CLIENT_ID)
    

    请按照文档了解更多详细信息。

    https://cli.vuejs.org/guide/mode-and-env.html#environment-variables

    【讨论】:

    • 好的!根据文档,我在根目录下创建了一个.env 文件,然后我将key=value 设置为VUE_APP_CLIENTID="2",然后在src/App.vue 中我使用了这个命令client_id: process.env.VUE_APP_CLIENTID,,我得到了未定义。
    • @InYourFace 你正在运行vue-cli-service build ?
    • 不,我不知道它是什么,如果我尝试将你的命令放在 CMD 中,它会显示 'vue-cli-service' is not recognized
    • @InYourFace 更新了解决方案以添加对 Vue.js 的 non-cli 项目的支持...检查 #1。
    • 感谢您的回复,但主要问题是安全性 我对 Vue JS 不提供安全性感到非常失望。如果没有安全性,就不需要 config.js,我们可以将所有凭据放入 app.vue。再次感谢兄弟❤️接受你的回答。
    猜你喜欢
    • 2018-12-05
    • 2016-02-10
    • 2021-02-02
    • 2019-02-14
    • 2018-12-12
    • 2018-11-10
    • 2022-11-26
    • 2014-12-01
    • 1970-01-01
    相关资源
    最近更新 更多