【发布时间】:2020-10-06 18:36:01
【问题描述】:
我正在尝试在我的 URL 中对递增的 ID 进行哈希处理。我似乎无法正确编码,我遵循了 this 和 this 教程,但没有帮助。我在控制器中尝试了getRouteKey() 中的代码,它似乎正在完成这项工作并按预期对 ID 进行哈希处理。
有人知道我做错了吗?
public function getRouteKey()
{
$key = $this->getKey();
$hashids = new \Hashids\Hashids('MySecretSalt', 5);
return $hashids->encode($key);
}
更新 然后我使用如下绑定/解码;
Route::model('property', Property::class);
Route::bind('property', function ($value, $route) {
$hashids = new \Hashids\Hashids('MySecretSalt', 5);
return $hashids->decode(intval($value))[0];
});
我的路线是;
Route::get(
'/{property}/vvv/',
'PropertyController@property_dashboard'
)->name('property.dashboard');
【问题讨论】:
-
你不会将 hashid 转回常规 id,在任何地方对其进行解码
-
@lagbox 我想我会在设置解码之前先完成散列逻辑,我在上面添加了,这不起作用。
return $hashids->decode(intval($value))[0]这个返回Undefined offset: 0,你认为解码是编码的问题? -
编码有什么问题......你自己的话说它在控制器中正确地散列它......那么你的问题的实际问题是什么?
-
@lagbox 正如我所说,它只适用于控制器(如下所示),而不是当我放入 getRouteKey() 函数时。
$key = $property->getKey(); $hashids = new \Hashids\Hashids('MySecretSalt', 5); return $hashids->encode($key);
标签: laravel routes obfuscation hashids