laravel collection all() 方法中如何哈希id值
How hash id value in laravel collection all() method
我正在尝试加密 laravel all() 方法在我看来返回的 id。
我的模型
protected $table = 'product';
protected $fillable = [
'id_product', 'code_product', 'name','total_stock','id_category','id_brand'
];
protected $primaryKey = 'id_product';
我想在id_product列中添加类似bcrypt的东西,因为我在请求api中使用了vue组件,returns所有产品,它显示解密在到达视图之前,从那里做是没有用的,这就是为什么我从这里直接看作为加密器。
这是控制器的方法
public function all(){
return $this->successResponse(Product::with('category','brand')->get());
}
有什么想法吗?谢谢。
查看这些方法中的 Accessors and Mutators as a way to encrypt the value on the way out, and decrypt it on the way in. Then you can just use the encryption helpers。
我可以想到 3 种处理方式 - 不公开 ID
选项 1:访问器和修改器
class Product extends Model
{
public function getIdProductAttribute($value)
{
return encrypt($value);
}
public function setIdProductAttribute($value)
{
$this->attributes['id_product'] = decrypt($value);
}
}
选项 2:在控制器方法中处理 encryption/decryption
public function all()
{
return $this->successResponse(
Product::with(['category', 'brand'])
->get()
->map(function($product){
$product->id_product = encrypt($product->id_product);
return $product;
})
);
}
//When you get the data back in say an update request handle decryption in the update method of controller
选项 3:使用 slug/uuid 并从数组中隐藏 id
在产品上定义一个新列 table 唯一 slug
或一个列来存储 uuid
然后使用这个新列来唯一标识产品中的记录 table
并在产品模型中将 id 列保留在 $hidden class
class Product extends Model
{
protected $hidden = ['id'];
}
我正在尝试加密 laravel all() 方法在我看来返回的 id。
我的模型
protected $table = 'product';
protected $fillable = [
'id_product', 'code_product', 'name','total_stock','id_category','id_brand'
];
protected $primaryKey = 'id_product';
我想在id_product列中添加类似bcrypt的东西,因为我在请求api中使用了vue组件,returns所有产品,它显示解密在到达视图之前,从那里做是没有用的,这就是为什么我从这里直接看作为加密器。
这是控制器的方法
public function all(){
return $this->successResponse(Product::with('category','brand')->get());
}
有什么想法吗?谢谢。
查看这些方法中的 Accessors and Mutators as a way to encrypt the value on the way out, and decrypt it on the way in. Then you can just use the encryption helpers。
我可以想到 3 种处理方式 - 不公开 ID
选项 1:访问器和修改器
class Product extends Model
{
public function getIdProductAttribute($value)
{
return encrypt($value);
}
public function setIdProductAttribute($value)
{
$this->attributes['id_product'] = decrypt($value);
}
}
选项 2:在控制器方法中处理 encryption/decryption
public function all()
{
return $this->successResponse(
Product::with(['category', 'brand'])
->get()
->map(function($product){
$product->id_product = encrypt($product->id_product);
return $product;
})
);
}
//When you get the data back in say an update request handle decryption in the update method of controller
选项 3:使用 slug/uuid 并从数组中隐藏 id
在产品上定义一个新列 table 唯一 slug
或一个列来存储 uuid
然后使用这个新列来唯一标识产品中的记录 table
并在产品模型中将 id 列保留在 $hidden class
class Product extends Model
{
protected $hidden = ['id'];
}