【发布时间】:2017-11-12 02:54:37
【问题描述】:
我有类似的控制器
记录、项目 .... 我使用 ID 的地方 /records/1, /records/2 .... /items/1, /items/2 .... 提示可以接收所有控制器(记录、项目...)的密码类型类型/记录/H $ Ur95% 92(任何哈希)的最佳变体。第一个选项是创建一个带有 set id hash 的表,并检查路由器中传输的 hash。但我觉得这个选项不太对,因为在添加新记录(ID)时,需要记录(检查)新的哈希值。我认为有一个简单的选项可以通过路由器很好地完成所有这些工作,而无需任何额外的表格。 像这样
$id= Crypt::encrypt(['id' => 1 ]);
<a href="{{url('/records/',$id)}}" target="_blank">get record</a>
然后像这样签入路由器
Route::get('/{id}', function($id){
..... Crypt::decrypt($id);............
});
也许可以找到我们为所有控制器设置全局规则的任何其他方式,以便仅在路由器区域加密和解密 ID(没有任何 guid/uuid)。
【问题讨论】:
-
如何使用 UUID?你试过github.com/webpatser/laravel-uuid吗? :)
-
另外,在使用这个包时,你不需要记录新的哈希,它是在持久化模型实例时自动生成的。
-
如果你想像youtube一样创建hashId,可以试试
HashIdsgithub.com/vinkla/laravel-hashids(hashids.org/php) -
一种选择是使用 md5 并将散列存储在数据库中或像 redis 这样的键值存储中,但这取决于您希望加密或拥有的程度,因为散列与加密不同,当你说哈希,它主要是一种方法,因此唯一真正的方法来反转哈希是蛮力但是知道原始值会使这更容易,我使用了 hashids 包@haidang 已经提到过和我已经提到过的 md5 方法,当我在我的数据库中创建实体时,我存储了 id 的 md5 值,例如,我有以下内容: ID | MD5_ID |姓名 | ......