在我的模型中,这个字段address是加密的.我用casts加密

protected $casts = ['address' => 'encrypted'];

我try 在模型上创建访问器

    public function getAddressAttribute($value)
    {
        try {
           $decryptedValue = Crypt::decryptString($value);
        } catch (\Illuminate\Contracts\Encryption\DecryptException $e) {
           $decryptedValue = ""; //or null
        }
        return $decryptedValue;
    }

但当我try 访问它时,它将返回为空/空,具体取决于我输入的内容

            "email": "flangosh@example.com",
            "name": "Kim Schulist",
            "address": "",

我的方法有什么问题吗?

另外,当我删除TRY CATCH语句或不使用访问器时,我得到的结果是 "message": "The MAC is invalid.",

推荐答案

将参数强制转换为encrypted会自动在适当的两个方向上对该值进行加密/解密.您在访问器中有效地进行了双重解密,但失败了.

(如果您删除了try/Catch内容,您将得到"有效负载无效"的DecryptException.)

在这种情况下,Try/Catch屏蔽了OP更改APP_KEY值所导致的错误.该值用作加密/解密密码;对它的任何更改都将 destruct 数据库中现有的任何加密数据.(数据迁移是可能的,但有点混乱,需要使用旧的APP_KEY值才能执行.)

Php相关问答推荐

Laravel 10查询中的多个where子句

如何在搜索域名时重定向到登陆页?

过滤WooCommerce管理员订单列表(+HPOS)中包含其作者产品的订单

致命错误:无法使用简单的php博客重新声明spl_autoload_Register()

Nginx重写扩展名为.php的动态URL

Symfony装置加载:try 从命名空间加载类";ClassUtils";Doctrine\Common\Util";

从WC会话变量更改WooCommerce checkout 托运方法成本

如何保存基于用户 Select 的复选框 Select 模式

如果为布尔值,则 for each 循环重新启动

为什么WooCommerce的动作钩子';woocommerce_checkout_update_order_review';包含旧信息?

如果所有请求都通过index.php路由,如何使用htaccess文件强制使用HTTPS?

htaccess 重定向子域错误的 url

WooCommerce 有关新订单的附加邮箱通知,其中包含具体详细信息

尽管有use指令,PHP 类在其他文件中仍处于可见状态

在 PHP 8.2 中使用 PHP Spreadsheet 和 CodeIgniter 3 导出 Excel 时出错

根据购买产品的自定义字段替换WooCommerce添加到购物车按钮

仅在管理员新订单通知中显示WooCommerce订单商品自定义元数据

Laravel 路由参数中的 ":" 是什么?

判断类别是否存在 Shopware 6

PHP 日期格式:ISO8601 与 ISO8601_EXPANDED