Laravel中存储API密钥的方式是什么?

9

是否有一个特定的文件或目录建议用于存储API密钥?我想把我的密钥从代码库中取出,但不确定放在哪里。


1
我的第一个想法是/app/config/目录,但这将被提交到版本控制,这可能不是你想要的。 - msturdy
2个回答

30

以下是适用于较新版本Laravel的更新回答。

首先,在您的.env文件中设置凭据。通常,您会希望以服务的名称为前缀,因此在此示例中,我将使用Google Maps。

GOOGLE_KEY=secret_api_key

那么,请查看config/services.php - 这是我们可以将环境变量映射到应用程序配置的地方。您会看到一些现成的示例。您可以在服务名称下添加其他配置,并将其指向环境变量。

'google' => [
    'key' => env('GOOGLE_KEY'),
],

那么当你需要在应用程序中访问此密钥时,可以通过应用程序配置获取它。

// Through a facade
Config::get('services.google.key');

// Through a helper
config('services.google.key');

确保不要仅通过应用程序使用env('GOOGLE_KEY') - 通过应用程序配置更具性能优势,因为它被缓存 - 特别是如果您在部署过程中调用php artisan config:cache


2
很棒的回答,@Dwight。 - Nelson Katale

6
你可以将API密钥设置为环境变量,然后通过这种方式访问它们。从文档中了解有关保护敏感配置的更多信息。
你只需在项目根目录创建一个.env.php文件,该文件返回环境变量数组。
<?php

return array(
    'SECRET_API_KEY' => 'PUT YOUR API KEY HERE'
);

然后你就可以像这样在你的应用程序中访问它。
getenv('SECRET_API_KEY');

谢谢!.env.php文件是否会自动被Git忽略? - A F
1
Laravel的当前版本默认情况下会忽略它们,但我不确定这是何时引入的。如果您最近开始项目,则应该已经被忽略了,否则您可以自己将其添加到.gitignore中。您可以参考Laravel存储库中的.gitignore - Dwight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接