我有这个网址:
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