Введение
Фасад Hash в Laravel обеспечивает надёжное Bcrypt-хеширование для хранения паролей пользователей.
добавлено в 5.3 ()
Bcrypt — отличный выбор для хеширования паролей, потому что сложность его вычисления настраивается. Это значит, что можно увеличить время генерации хеша при увеличении мощности железа.
добавлено в 5.0 ()
Основы использования
Вы можете хешировать пароль, вызвав метод PHPmake()
фасада Hash:
добавлено в 5.3 ()
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();
}
}
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
:
$password = bcrypt('секрет');
добавлено в 5.3 () 5.2 () 5.1 ()
Метод PHPcheck()
позволяет сверить текстовую строку и имеющийся хеш. Но если вы используете встроенный в Laravel LoginController (для версии 5.2 и ранее — AuthController), то вам не нужно использовать этот метод, так как этот контроллер автоматически вызывает его:
if (Hash::check('секрет', $hashedPassword)) {
// Пароль верный...
}
Проверка необходимости повторного хеширования пароля
Функция PHPneedsRehash
позволяет определить, изменилась ли используемая сложность хеширования с момента создания хеша для пароля:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('секрет');
}
Комментарии (2)
Сейчас будет вопрос, многие скажут тупой, но , вот пример есть другая система, с другим методом шифрования, как сменить его в Laravel ? нашел «мега» способы добавить еще одно поле и сделать доп. проверку на это поле, после метода Auth::attempt. Но мне кажется это как то слишком ?
Можно сделать гораздо проще:
Разослать письма о том, что ваш проект сменил движок и требуется перейти по ссылке для восстановления пароля.