如何安全地从.env文件中检索API密钥到javascript视图 - Laravel

时间:2017-04-09 01:34:17

标签: javascript php ajax laravel laravel-5.3

我将密钥安全放在.env文件中,我想向付费API服务发出ajax请求。 我有一个Javascript文件(包含ajax代码),它位于public / ajax.js

我可以通过这种方式检索,将这行代码:$key = env('SECRET_API_KEY');放在控制器中并使用https://github.com/laracasts/PHP-Vars-To-Js-Transformer直接将其传递给javascript,但后来我被迫将@include('footer')放入某个X中页。因此,当我查看源代码时,我会看到我的API密钥:/

我能够成功提取数据但如何防止这种情况?

我目前在Ajax代码中的网址:url:"http://johndoe?param1=abc&param2=def&_token="+key,

如果我直接将其放入javascript $key = env('SECRET_API_KEY');,我会收到错误Uncaught ReferenceError: env is not defined

检索api密钥的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

定义JS将从该路由调用的路由,定义将处理请求并对付费服务进行API调用的控制器和函数。

Route::get('api-call', 'APIController@call');

//APIController
//use GuzzleHttp\Exception\GuzzleException;
//use GuzzleHttp\Client;
...

public function call(Request $request)
{
    $params = $request->all();

    $api_key = env('SECRET_API_KEY');
    $url = 'url-to-paid-service?' . $params . '&key=' . $api_key; 
    $client = new Client();
    $res = $client->get($url);

    return response()->json($res->getBody());
}

在您的ajax中,拨打电话http://your-own-site/api-call