Laravel 5 Anwendungsschlüssel

80

Ich bin neu in Laravel. Ich habe heute Abend gerade damit angefangen. Eigentlich habe ich folgenden Code:

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

In xampp / htdocs / laravel / blog / config / app.php .
Ich möchte diesen Schlüssel in 32-Bit von cmd ändern als:

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

Es generiert den Schlüssel, konnte ihn jedoch in xampp / htdocs / laravel / blog / config / app.php nicht ersetzen / aktualisieren .

Raham
quelle
Haben Sie die .env-Datei installiert? Wenn ja, überprüfen Sie bitte, ob Sie dort einen Schlüssel haben.
Juan Carlos Brown
@ Juan Carlos Brown Ich habe es von dort bekommen, danke.
Raham
Ich habe eine neue Antwort hinzugefügt, um die Passwörter der Benutzer hervorzuheben.
Prosti

Antworten:

108

Diese Zeile in den app.php, 'key' => env('APP_KEY', 'SomeRandomString'),, sagt , dass der Schlüssel für Ihre Anwendung finden Sie in Ihrer finden .envDatei auf der Linie APP_KEY.

Grundsätzlich weist es Laravel an, zuerst nach dem Schlüssel in der .envDatei zu suchen und ihn zu verwenden, wenn dort keiner vorhanden ist 'SomeRandomString'.

Wenn Sie das verwenden php artisan key:generate, wird der neue Schlüssel für Ihre .envDatei und nicht für die app.phpDatei generiert .

Wie Kotapeter sagte, befindet sich Ihr .envTestament in Ihrem Laravel-Stammverzeichnis und ist möglicherweise versteckt. xampp / htdocs / laravel / blog

James
quelle
81

Sie können a keymit dem folgenden Befehl generieren :

php artisan key:generate 

Der Schlüssel wird automatisch in Ihre .envDatei geschrieben.

APP_KEY=YOUR_GENERATED_KEY

Wenn Sie Ihre Option keynach der Generierung sehen möchten, verwenden Sie sie--show

php artisan key:generate --show

Hinweis: Dies .envist eine versteckte Datei in Ihrem Projektordner.

Geben Sie hier die Bildbeschreibung ein

Peter Kota
quelle
2
Zeile wird automatisch aktualisiert, wenn der Befehl ausgeführt wird, wenn Sie bereits die leere Standardzeile haben. APP_KEY =
Andrew
42

Als weitere Option, wenn Sie nur den Schlüssel drucken möchten (die .env-Datei wird nicht geschrieben), können Sie Folgendes verwenden:

php artisan key:generate --show
JohnnyAce
quelle
Dies sollte Standard sein? Andernfalls, wenn Sie PHP Artisan Key eingeben: Generieren Sie nicht die Passwörter in Ihrem (hoffentlich Entwicklungs-) Computer? IE wir brauchen PHP Artisan Key: generieren --write
Tom Andersen
1
@ TomAndersen Nein, APP_KEY wird nur für die Verschlüsselung (also standardmäßig Cookies) verwendet, NICHT für das Passwort-Hashing. Ich dachte, tighten.co/blog/app-key-and-you wäre eine nette Erklärung.
Charles Wood
2

Von der Linie

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

APP_KEYist eine globale Umgebungsvariable, die in der .envDatei vorhanden ist.

Sie können den Anwendungsschlüssel ersetzen, wenn Sie auslösen

php artisan key:generate

Befehl. Dadurch wird immer der neue Schlüssel generiert.

Die Ausgabe kann folgendermaßen aussehen:


Application key [Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3] set successfully.

Application key [base64:uynE8re8ybt2wabaBjqMwQvLczKlDSQJHCepqxmGffE=] set successfully.

Die Base64-Codierung sollte in Laravel 5.4 die Standardeinstellung sein

Beachten Sie, dass beim ersten Erstellen Ihrer Laravel-Anwendung der Schlüssel: generate automatisch aufgerufen wird.

Wenn Sie den Schlüssel ändern, beachten Sie, dass mit gespeicherte Passwörter Hash::make()nicht mehr gültig sind.

Prosti
quelle
4
"Wenn Sie den Schlüssel ändern, beachten Sie, dass mit Hash :: make () gespeicherte Kennwörter nicht mehr gültig sind." - Das habe ich auch gedacht. Ich habe das auch ziemlich oft im Internet gelesen. Wenn Sie sich jedoch github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… und github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… und die Vergangenheit ansehen In Versionen dieses Codes wird der App-Schlüssel nicht zum Saltieren des Hashs oder für andere Zwecke verwendet. Ich habe versucht, den App-Schlüssel zu ändern, und wie der Code andeutet, wird mein Passwort immer noch korrekt überprüft.
Leif
1
Der Anwendungsschlüssel wird zum Verschlüsseln von Sitzungsdaten anstelle von Kennwörtern verwendet, was in der Dokumentation erwähnt wird. Außerdem wird, zumindest nach meinem Verständnis, eine symmetisch entschlüsselbare Verschlüsselung vorausgesetzt.
Sergey Neskhodovskiy
1

Für mich bestand das Problem darin, dass ich noch nicht composer updatefür dieses neue Projekt / diese neue Gabel gelaufen war . Der Befehl schlug lautlos fehl, nichts passierte.

Nach dem Laufen hat composer updatees funktioniert.

ux.engineer
quelle
1
Du kannst meinen composer install. Sie sollten nicht unbedingt composer updatesofort auf einem neuen Zweig eines Projekts ausgeführt werden, es sei denn, Sie möchten tatsächlich Abhängigkeiten aktualisieren.
Dan Abrey