【问题标题】:Encrypt ID in routers URL?加密路由器 URL 中的 ID?
【发布时间】: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 |姓名 | ......

标签: laravel laravel-5


【解决方案1】:

就像@haidang 提到的,你可以使用Vinkla 的Hashids(https://github.com/vinkla/laravel-hashids) 包。

实施步骤

安装

composer require vinkla/hashids

如果你运行的是 laravel 5.5+,那么这个包会被自动发现。否则将服务提供者添加到 config/app.php 文件

服务提供者(适用于 Laravel 5.4 及更低版本)

将服务提供者添加到 providers 数组中的 config/app.php,或者如果你使用 Laravel 5.5,这可以通过自动包发现来完成。

Vinkla\Hashids\HashidsServiceProvider::class

如果你愿意,你可以使用外观。将 config/app.php 中的引用添加到您的别名数组中。

'Hashids' => Vinkla\Hashids\Facades\Hashids::class

然后

php artisan vendor:publish

用法

// You can alias this in config/app.php.
use Vinkla\Hashids\Facades\Hashids;

Hashids::encode(4815162342);

Hashids::decode('doyouthinkthatsairyourebreathingnow');
// This example is simple and there are far more methods available.

【讨论】:

  • 嗨@Saravanan Sampathkumar,首先感谢您的回答。我尝试安装它但得到下一个混乱github.com/vinkla/laravel-hashids/issues/71我需要做什么来安装这个包?
  • 您似乎安装了错误版本的vinkla 软件包。你应该做 2.2.0 版本。尝试做“作曲家需要vinkla/hashids 2.2.0”
猜你喜欢
  • 2015-03-09
  • 1970-01-01
  • 2017-05-07
  • 2020-07-03
  • 2021-06-02
  • 2023-02-16
  • 2011-05-27
  • 1970-01-01
  • 2012-07-17
相关资源
最近更新 更多