Laravel 5 应用程序密钥

Posted

技术标签:

【中文标题】Laravel 5 应用程序密钥【英文标题】:Laravel 5 Application Key 【发布时间】:2016-02-15 11:56:06 【问题描述】:

我是 Laravel 的新手。我今晚才开始。实际上,我有以下代码:

'key' => env('APP_KEY', 'SomeRandomString'),

xampp/htdocs/laravel/blog/config/app.php中。 我想通过 cmd 将此密钥更改为 32 位:

xampp\htdocs\laravel/blog>php artisan key:generate 

它生成密钥但无法在 xampp/htdocs/laravel/blog/config/app.php 中替换/更新

【问题讨论】:

你有 .env 文件吗?如果有,请检查您是否有钥匙。 @Juan Carlos Brown 我从那里得到它,谢谢。 我添加了一个新答案,只是为了强调用户密码。 【参考方案1】:

您的app.php'key' => env('APP_KEY', 'SomeRandomString'), 中的这一行表示您的应用程序的密钥可以在您的.env 文件中的APP_KEY 行中找到。

基本上,它告诉 Laravel 首先在 .env 文件中查找密钥,如果没有,则使用 'SomeRandomString'

当您使用php artisan key:generate 时,它将为您的.env 文件生成新密钥,而不是app.php 文件。

正如 kotapeter 所说,您的 .env 将在您的 Laravel 根目录中,并且可能被隐藏; xampp/htdocs/laravel/博客

【讨论】:

【参考方案2】:

您可以通过以下命令生成key

php artisan key:generate 

密钥将自动写入您的.env 文件中。

APP_KEY=YOUR_GENERATED_KEY

如果您想在生成后查看您的key,请使用--show 选项

php artisan key:generate --show

注意:.env 是项目文件夹中的隐藏文件。

【讨论】:

如果你已经有默认的空行 APP_KEY =,运行命令时行会自动更新【参考方案3】:

如果您只想打印可以使用的密钥(不写入 .env 文件),作为另一种选择:

php artisan key:generate --show

【讨论】:

这应该是默认的吗?否则,当您键入 php artisan key:generate 时,您不会在(希望是开发)机器中输入密码吗? IE 我们需要 php artisan key:generate --write @TomAndersen 不,APP_KEY 仅用于加密(因此,默认情况下,cookie),不用于密码哈希。我认为tighten.co/blog/app-key-and-you 是一个很好的解释。【参考方案4】:

从线

'key' => env('APP_KEY', 'SomeRandomString'),

APP_KEY 是一个全局环境变量,存在于.env 文件中。

触发后可以替换应用密钥

php artisan key:generate

命令。这将始终生成新密钥。

输出可能是这样的:


Application key [Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3] set successfully.

Application key [base64:uynE8re8ybt2wabaBjqMwQvLczKlDSQJHCepqxmGffE=] set successfully.

Base64 编码应该是 Laravel 5.4 中的默认编码

请注意,当您第一次创建 Laravel 应用程序时,会自动调用 key:generate。

如果您更改密钥,请注意使用Hash::make() 保存的密码将不再有效。

【讨论】:

"如果您更改密钥,请注意使用 Hash::make() 保存的密码将不再有效。" - 我也是这么想的。我也经常在网上读到这个。但是,如果您查看 github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… 和 github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… 以及此代码的过去版本,应用程序密钥不会用于对哈希进行加盐或用于其他任何事情。我尝试更改应用程序密钥,并且如代码所示,我的密码仍然检查正确。 应用程序密钥用于加密会话数据,而不是documentation 中提到的密码,此外,至少根据我的理解,它假定对称可解密加密。【参考方案5】:

对我来说,问题在于我还没有为这个新的 project/fork 运行 composer update。命令静默失败,什么也没发生。

运行composer update 后,它工作了。

【讨论】:

您的意思可能是composer install。除非您确实想要更新依赖项,否则您不必立即在项目的新分支上运行 composer update

以上是关于Laravel 5 应用程序密钥的主要内容,如果未能解决你的问题,请参考以下文章

检查 Laravel 5.1 中是不是存在会话密钥?

如何在 laravel 5.5 中验证 Mailchimp api 密钥

Laravel 5.4:指定的密钥太长错误[重复]

Laravel 应用程序密钥 - 它是啥以及它是如何工作的?

Laravel 框架版本 5.2.26 安装在 ubuntu os 中获取密钥生成错误

Laravel 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节 laravel 5.3