如何在Laravel中创建一个不显示资源ID的URL?

时间:2014-03-08 23:54:46

标签: laravel-4

在我开发我的应用程序时,我意识到我不希望最终用户在URL中看到资源ID。

考虑URL http://localhost/users/12345,这是获取所需用户资源的合理方式。

最好的方法是什么?

以下是相关问题:How to reroute a resource to include a different field besides $id in Laravel 4

4 个答案:

答案 0 :(得分:2)

将您的ID转换为其他内容。以Tiny-PHP软件包为例:https://github.com/zackkitzmiller/tiny-php,您可以将其用于:

URL::route('user', array('user_id' => $tiny->to($user->id)));

当你收回它时:

$user = User::find($tiny->from(Input::get('user_id')));

答案 1 :(得分:1)

您最终选择的最佳选择是Hashids。它基本上接受任何数字并根据您提供的编码密钥吐出(显然)随机字符串。然后,您将拥有Youtube视频或bit.ly链接等网址,而不会泄露您的资源ID。您可以直接在Laravel中使用它,包括您的composer.json文件中的this repository

答案 2 :(得分:1)

我会使用另一个唯一标识符,例如用户名,在路线中你可以做这样的事情......

Route::get('user/{username}', array('uses' => 'Username@show', 'as' => 'username'));

“{username}”部分是一个通配符,表示可以使用数据库中的任何用户名。

答案 3 :(得分:0)

我发布了这种可能的投票解决方案。会引用username代替id而使unique字段足够吗?