После добавления функции шифрования появляется сообщение «Недопустимая полезная нагрузка». - PullRequest
0 голосов
/ 03 марта 2019

Я использую приложение todo этого джентльмена, и оно отлично работает.

https://github.com/ericlie/Laravel-Simple-Todo-List#setting-up

Я попытался добавить шифрование и дешифрование в это приложение, используя ответ этого джентльмена.

Шифрование и дешифрование в Laravel 5

Но я получаю эту ошибку после добавления кода -

Полезная нагрузка недействительна

Я искал и пробовал функции шифрования и дешифрования, но он всегда показывает одну и ту же ошибку.

Может кто-нибудь сказать мне, что не так с моим кодом?

Я хотел бы использовать шифрованиеи расшифровка столбца таблицы задач и таблиц "пользователей" имя и email столбцов.

Вот мой контроллер задачи -

class Task extends Model
{
    // I add this 
    use EncryptsAttributes;
    protected $encrypts = ['task'];

   // original code
    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }
}

1 Ответ

0 голосов
/ 06 марта 2019

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

Вы получаете эту ошибку здесь на return decrypt($this->attributes[$key]) в вашем EncryptsAttributes.php признаке.

public function getAttributeValue($key) {
    if(in_array($key, $this->getEncrypts())) {
        return decrypt($this->attributes[$key]);
    }
    return parent::getAttributeValue($key);
}

decrypt() не может работать с незашифрованной строкой .Сейчас у вас есть некоторые данные в столбце task, которые не зашифрованы, и эта функция decrypt() пытается расшифровать незашифрованные данные.

Решением этой проблемы является либо дешифрование всех существующих данных вtask или вы можете обработать это следующим образом:

public function getAttributeValue($key)
{
    if(in_array($key, $this->getEncrypts())) {
        try {
            return decrypt($this->attributes[$key]);
        } catch (\Exception $e) {
            return $this->attributes[$key];
        }
    }

    return parent::getAttributeValue($key);
}

Это взято из вашей черты EncryptsAttributes.php .Я добавил блок try / catch для решения этой проблемы.Если у вас есть данные, которые не зашифрованы, то они просто предоставят вам данные, не пытаясь расшифровать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...