如何从 URL 拉拉维尔 7 中隐藏 ID?



我有这个网址:

http://127.0.0.1:8000/deliverer/4

我想要这样

http://127.0.0.1:8000/deliverer/

这是我的函数:

public function show($id)
{
//        $userhash->hashids->encode($id);
$user=User::find($id);
return view('deliverer.profile')->with('user',$user);
}

这是我的路线

Route::get('deliverer/{id}', 'delivererDelivererController@show')->name('profile');

而这在

<a          href="http://127.0.0.1:8000/deliverer/{{ Auth::user()->id }}" >
<i class="nc-icon nc-single-02"></i>
<p>Profile</p>
</a>

假设您要完成的是查看当前经过身份验证的用户的配置文件,那么您应该按照以下步骤操作:

首先,您必须修改路由并从 URL 中删除 {id},如下所示:

Route::get('deliverer', 'delivererDelivererController@show')->name('profile');

然后,在控制器内部,您必须从 show(( 方法中删除$id参数,并更改方法以从经过身份验证的用户那里获取 id。

public function show($id)
{
//        $userhash->hashids->encode($id);
$user = Auth::user();
return view('deliverer.profile')->with('user',$user);
}

当然,您必须从视图路由中删除 Auth::user((->id((,并且可能使用命名路由而不是硬编码它,如下所示:

<a href="{{ route('profile') }}">
<i class="nc-icon nc-single-02"></i>
<p>Profile</p>
</a>

我假设你只是想隐藏id,以便用户可以猜测下一个数字或尝试提取他们不应该的记录。

你调查过UUID吗?此处的示例:(https://dev.to/wilburpowery/easily-use-uuids-in-laravel-45be(这可能是一个解决方案。

此外,如果您担心有人可能会篡改 URL 来提取记录,您应该考虑保护您的模型。执行检查以查看用户是否应有权访问该特定记录。有很多方法可以实现这一点。

您可以使用令牌或配置中间件,或者像您所做的那样,您可以对 id 进行哈希或加密并在调用后进行验证

网址将是这样的:

http://127.0.0.1:8000/deliverer/?id=aze45a8sd54q

最新更新