Clave de la aplicación Laravel 5

80

Soy nuevo en Laravel. Lo empecé esta noche. De hecho, tengo el siguiente código:

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

En xampp / htdocs / laravel / blog / config / app.php .
Quiero cambiar esta clave a 32 bits por cmd como:

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

Genera la clave pero no pudo reemplazar / actualizar en xampp / htdocs / laravel / blog / config / app.php .

Raham
fuente
¿Tiene el archivo .env en su lugar? Si es así, compruebe si tiene una llave allí.
Juan Carlos Brown
@Juan Carlos Brown Lo saqué de ahí, gracias.
Raham
Agregué una nueva respuesta, solo para enfatizar en las contraseñas de los usuarios.
prosti

Respuestas:

108

Esta línea en su app.php, 'key' => env('APP_KEY', 'SomeRandomString'),, está diciendo que la clave para su aplicación se puede encontrar en su .envarchivo en la línea APP_KEY.

Básicamente, le dice a Laravel que busque la clave en el .envarchivo primero y si no hay una para usar 'SomeRandomString'.

Cuando use el php artisan key:generate, generará la nueva clave para su .envarchivo y no el app.phparchivo.

Como dijo kotapeter, .envestará dentro de su directorio raíz de Laravel y puede estar oculto; xampp / htdocs / laravel / blog

James
fuente
82

Puede generar un keymediante el siguiente comando:

php artisan key:generate 

La clave se escribirá automáticamente en su .envarchivo.

APP_KEY=YOUR_GENERATED_KEY

Si desea ver su opción de keyuso posterior a la generación--show

php artisan key:generate --show

Nota: El .enves un archivo oculto en la carpeta de su proyecto.

ingrese la descripción de la imagen aquí

Peter Kota
fuente
2
La línea se actualiza automáticamente cuando ejecuta el comando si ya tiene la línea vacía predeterminada APP_KEY =
Andrew
42

Solo como otra opción si desea imprimir solo la clave (no escribe el archivo .env) puede usar:

php artisan key:generate --show
JohnnyAce
fuente
esto debería ser predeterminado? De lo contrario, cuando escriba php artisan key: generate, ¿no aplica las contraseñas en su máquina (con suerte de desarrollo)? IE, necesitamos php artisan key: generate --write
Tom Andersen
1
@TomAndersen No, APP_KEY solo se usa para el cifrado (por lo tanto, las cookies de forma predeterminada), NO para el hash de contraseñas. Pensé que tighten.co/blog/app-key-and-you era una buena explicación.
Charles Wood
2

De la linea

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

APP_KEYes una variable de entorno global que está presente dentro del .envarchivo.

Puede reemplazar la clave de la aplicación si activa

php artisan key:generate

mando. Esto siempre generará la nueva clave.

La salida puede ser así:


Application key [Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3] set successfully.

Application key [base64:uynE8re8ybt2wabaBjqMwQvLczKlDSQJHCepqxmGffE=] set successfully.

La codificación Base64 debería ser la predeterminada en Laravel 5.4

Tenga en cuenta que cuando crea por primera vez su aplicación Laravel, key: generate se llama automáticamente.

Si cambia la clave, tenga en cuenta que las contraseñas guardadas con Hash::make()ya no serán válidas.

prosti
fuente
4
"Si cambia la clave, tenga en cuenta que las contraseñas guardadas con Hash :: make () ya no serán válidas". - Eso es algo que yo también pensé. También leo esto con bastante frecuencia en Internet. Sin embargo, si echas un vistazo a github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… y github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… y el pasado versiones de este código, la clave de la aplicación no se usa para salar el hash ni para ninguna otra cosa. Intenté cambiar la clave de la aplicación y, como sugiere el código, mi contraseña aún se verifica correctamente.
Leif
1
La clave de la aplicación se utiliza para cifrar los datos de la sesión, en lugar de las contraseñas, que se menciona en la documentación y, además, al menos según tengo entendido, asume un cifrado simmético descifrable.
Sergey Neskhodovskiy
1

Para mí, el problema radicaba en que aún no me había postulado composer updatepara este nuevo proyecto / bifurcación . El comando falló en silencio, no pasó nada.

Después de ejecutarlo composer updatefuncionó.

ingeniero ux
fuente
1
Puede querer decir composer install. No necesariamente debería estar ejecutándose composer updateinmediatamente en una nueva bifurcación de un proyecto, a menos que realmente desee actualizar las dependencias.
Dan Abrey