Khóa ứng dụng Laravel 5


80

Tôi mới sử dụng Laravel. Tôi chỉ mới bắt đầu nó tối nay. Trên thực tế, tôi có mã sau:

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

Trong xampp / htdocs / laravel / blog / config / app.php .
Tôi muốn thay đổi khóa này thành 32-bit bằng cmd như:

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

Nó tạo khóa nhưng không thể thay thế / cập nhật trong xampp / htdocs / laravel / blog / config / app.php .


Bạn có tệp .env tại chỗ không? nếu vậy, vui lòng kiểm tra xem bạn có chìa khóa trong đó không.
Juan Carlos Brown,

@Juan Carlos Brown Tôi lấy nó từ đó, Cảm ơn bạn.
Raham

Tôi đã thêm một câu trả lời mới, chỉ để nhấn mạnh về mật khẩu của người dùng.
prosti 22/02/17

Câu trả lời:


108

Dòng này trong của bạn app.php, 'key' => env('APP_KEY', 'SomeRandomString'),nói rằng khóa cho ứng dụng của bạn có thể được tìm thấy trong .envtệp của bạn trên dòng APP_KEY.

Về cơ bản, nó yêu cầu Laravel tìm kiếm khóa trong .envtệp trước và nếu không có khóa ở đó thì hãy sử dụng 'SomeRandomString'.

Khi bạn sử dụng, php artisan key:generatenó sẽ tạo khóa mới cho .envtệp của bạn chứ không phải app.phptệp.

Như kotapeter đã nói, .envdi chúc của bạn nằm bên trong thư mục Laravel gốc của bạn và có thể bị ẩn; xampp / htdocs / laravel / blog


82

Bạn có thể tạo một keybằng lệnh sau:

php artisan key:generate 

Khóa sẽ được ghi tự động trong .envtệp của bạn .

APP_KEY=YOUR_GENERATED_KEY

Nếu bạn muốn xem tùy chọn keysử dụng thế hệ sau của mình--show

php artisan key:generate --show

Lưu ý: Đây .envlà một tệp ẩn trong thư mục dự án của bạn.

nhập mô tả hình ảnh ở đây


2
dòng được cập nhật tự động khi chạy lệnh nếu bạn đã có dòng trống mặc định APP_KEY =
Andrew

42

Cũng giống như một tùy chọn khác nếu bạn chỉ muốn in khóa (không ghi tệp .env), bạn có thể sử dụng:

php artisan key:generate --show

cái này nên được mặc định? Nếu không, khi bạn nhập php Artian key: tạo ra bạn không tạo mật khẩu trong máy (hy vọng là phát triển) của bạn? IE chúng ta cần chìa khóa thợ php: tạo --write
Tom Andersen

1
@TomAndersen Không, APP_KEY chỉ được sử dụng để mã hóa (vì vậy, theo mặc định, cookie), KHÔNG dùng để băm mật khẩu. Tôi nghĩ rằng thắt chặt.co/blog/app-key-and-you là một lời giải thích hay.
Charles Wood

2

Từ dòng

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

APP_KEYlà một biến môi trường toàn cục có bên trong .envtệp.

Bạn có thể thay thế khóa ứng dụng nếu bạn kích hoạt

php artisan key:generate

chỉ huy. Thao tác này sẽ luôn tạo ra khóa mới.

Đầu ra có thể như thế này:


Application key [Idgz1PE3zO9iNc0E3oeH3CHDPX9MzZe3] set successfully.

Application key [base64:uynE8re8ybt2wabaBjqMwQvLczKlDSQJHCepqxmGffE=] set successfully.

Mã hóa Base64 phải là mặc định trong Laravel 5.4

Lưu ý rằng khi bạn tạo ứng dụng Laravel lần đầu tiên, key: create sẽ tự động được gọi.

Nếu bạn thay đổi khóa, hãy lưu ý rằng mật khẩu được lưu với Hash::make()sẽ không còn hợp lệ.


4
"Nếu bạn thay đổi khóa, hãy lưu ý rằng mật khẩu được lưu bằng Hash :: make () sẽ không còn hợp lệ." - Đó là điều mà tôi cũng nghĩ. Tôi cũng đọc điều này khá thường xuyên trên internet. Tuy nhiên, nếu bạn đã xem github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/…github.com/laravel/framework/blob/5.5/src/Illuminate/Hashing/… và quá khứ phiên bản của mã này, khóa ứng dụng không được sử dụng để muối băm hoặc cho bất kỳ thứ gì khác. Tôi đã thử thay đổi khóa ứng dụng và giống như mã gợi ý, mật khẩu của tôi vẫn được kiểm tra chính xác.
Leif

1
Khóa ứng dụng được sử dụng để mã hóa dữ liệu phiên, chứ không phải mật khẩu, được đề cập trong tài liệu và ngoài ra, ít nhất theo hiểu biết của tôi, nó giả định mã hóa có thể giải mã cộng sinh.
Sergey Neskhodovskiy

1

Đối với tôi, vấn đề là tôi vẫn chưa chạy composer updatecho dự án / ngã ba mới này . Lệnh thất bại âm thầm, không có gì xảy ra.

Sau khi chạy composer updatenó đã hoạt động.


1
Bạn có thể có nghĩa là composer install. Bạn không nhất thiết phải chạy composer updatengay lập tức trên một nhánh mới của một dự án, trừ khi bạn thực sự muốn cập nhật các phần phụ thuộc.
Dan Abrey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.