在我开发我的应用程序时,我意识到我不希望最终用户在URL中看到资源ID。
考虑URL http://localhost/users/12345
,这是获取所需用户资源的合理方式。
最好的方法是什么?
以下是相关问题:How to reroute a resource to include a different field besides $id in Laravel 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
字段足够吗?