Может войдёшь?
Черновики Написать статью Профиль

Хеширование

перевод документация 5.х

  1. 1. Введение
  2. 2. Основы использования
Этот перевод актуален для англоязычной документации на (ветка 5.3) , (ветка 5.2) , (ветка 5.1) и (ветка 5.0). Опечатка? Выдели и нажми Ctrl+Enter.

Введение

Фасад Hash в Laravel обеспечивает надёжное Bcrypt-хеширование для хранения паролей пользователей.

+ 5.3

добавлено в 5.3 ()

Если вы используете встроенные классы LoginController и RegisterController, включённые в ваше Laravel-приложение, они будут автоматически использовать Bcrypt для регистрации и авторизации.

+ 5.2 5.1 5.0

добавлено в 5.2 () 5.1 () 5.0 ()

Если вы используете контроллер AuthController, включённый в ваше Laravel-приложение, он будет автоматически использовать Bcrypt для регистрации и авторизации.

Bcrypt — отличный выбор для хеширования паролей, потому что сложность его вычисления настраивается. Это значит, что можно увеличить время генерации хеша при увеличении мощности железа.

+ 5.0

добавлено в 5.0 ()

Также, пользовательская служба Registrar, поставляемая с Laravel, выполняет вызов соответствующей функции PHPbcrypt для хеширования сохранённых паролей.

Основы использования

Вы можете хешировать пароль, вызвав метод PHPmake() фасада Hash:

+ 5.3

добавлено в 5.3 ()

PHP
namespace App\Http\Controllers;

use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Hash;
use 
App\Http\Controllers\Controller;

class 
UpdatePasswordController extends Controller
{
  
/**
   * Обновление пароля пользователя.
   *
   * @param  Request  $request
   * @return Response
   */
  
public function update(Request $request)
  {
    
// Проверка длины пароля...

    
$request->user()->fill([
      
'password' => Hash::make($request->newPassword)
    ])->
save();
  }
}
+ 5.2 5.1

добавлено в 5.2 () 5.1 ()

PHP
namespace App\Http\Controllers;

use 
Hash;
use 
App\User;
use 
Illuminate\Http\Request;
use 
App\Http\Controllers\Controller;

class 
UserController extends Controller
{
  
/**
  * Обновление пароля пользователя.
  *
  * @param  Request  $request
  * @param  int  $id
  * @return Response
  */
  
public function updatePassword(Request $request$id)
  {
    
$user User::findOrFail($id);

    
// Проверка длины пароля...

    
$user->fill([
      
'password' => Hash::make($request->newPassword)
    ])->
save();
  }

Вы также можете использовать глобальную вспомогательную функцию PHPbcrypt:

PHP
$password bcrypt('секрет');
+ 5.0

добавлено в 5.0 ()

PHP
$password Hash::make('секрет');

Сверка пароля с хешем

+ 5.3 5.2 5.1

добавлено в 5.3 () 5.2 () 5.1 ()

Метод PHPcheck() позволяет сверить текстовую строку и имеющийся хеш. Но если вы используете встроенный в Laravel LoginController (для версии 5.2 и ранее — AuthController), то вам не нужно использовать этот метод, так как этот контроллер автоматически вызывает его:

PHP
if (Hash::check('секрет'$hashedPassword))  {
  
// Пароль верный...
}

Проверка необходимости повторного хеширования пароля

Функция PHPneedsRehash позволяет определить, изменилась ли используемая сложность хеширования с момента создания хеша для пароля:

PHP
if (Hash::needsRehash($hashed))  {
  
$hashed Hash::make('секрет');
}

Комментарии (2)

orange_shadow

Сейчас будет вопрос, многие скажут тупой, но , вот пример есть другая система, с другим методом шифрования, как сменить его в Laravel ? нашел «мега» способы добавить еще одно поле и сделать доп. проверку на это поле, после метода Auth::attempt. Но мне кажется это как то слишком ?

siptik

Можно сделать гораздо проще:
Разослать письма о том, что ваш проект сменил движок и требуется перейти по ссылке для восстановления пароля.

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.