LARAVEL Полезная нагрузка неверна, но расшифрованные данные верны

Недавно я сделал новый проект с помощью composer и добавил базовую аутентификацию с помощью make: auth — ничего особенного.

Далее я хотел зашифровать название а также Эл. адрес столбцы в моей базе данных, поэтому я изменил их типы с VARCHAR (191) на LONGTEXT и добавил некоторые очень простые мутаторы в модель Users

public function setNameAttribute($value) {
$this->attributes['name'] = Crypt::encryptString($value);
}

public function getNameAttribute($value) {
return Crypt::decryptString($value);
}

public function setEmailAttribute($value) {
$this->attributes['email'] = Crypt::encryptString($value);
}

public function getEmailAttribute($value) {
return Crypt::decryptString($value);
}

Но когда я тестирую с моим очень простым маршрутом, я получаю полезную нагрузку недействительной ошибкой, хотя я вижу в содержимом ошибки, что поля были расшифрованы правильно

Route::get('user',function(){
$user= \App\User::find(3);
//dd($user->name);
dd(Crypt::decryptString($user->name));
dd(Crypt::decryptString($user->email));

});

Скриншот ссылка
https://ibb.co/deBPpR

0

Решение

Ошибка в том, что ты звонишь Crypt::decryptString на уже мутировавшем (и расшифрованном) имени свойства. твой getNameAttribute расшифровывает зашифрованную строку и при вызове

Crypt::decryptString($user->name); // this is causing the error

Вы в основном передаете расшифрованную строку для расшифровки снова.

Просто делать:

echo $user->name;

и вы получите расшифрованное имя.

Если вы действительно хотите увидеть необработанное значение, используйте:

echo $user->getOriginal('name'); //get original value from DB bypassing the accessor
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]