Laravel 从Posts表获取用户id

Laravel 从Posts表获取用户id,laravel,eloquent,laravel-5.8,Laravel,Eloquent,Laravel 5.8,我有一条销毁帖子的路线,我如何才能使能够访问该路线的人只是帖子的创建者?例如,我有一篇id为3且用户id为5的帖子,因此唯一可以删除编号3的只有用户id 5。我尝试过使用中间件,但运气不好,无法让它正常工作 CekStatus.php(中间件) 类CekStatus { 公共函数句柄($request,Closure$next) { $userId=$request->id; $user=Post::where('id',$userId)->select('user_id')->pull('us

我有一条销毁帖子的路线,我如何才能使能够访问该路线的人只是帖子的创建者?例如,我有一篇id为3且用户id为5的帖子,因此唯一可以删除编号3的只有用户id 5。我尝试过使用中间件,但运气不好,无法让它正常工作

CekStatus.php(中间件)

类CekStatus
{
公共函数句柄($request,Closure$next)
{
$userId=$request->id;
$user=Post::where('id',$userId)->select('user_id')->pull('user_id')->first();
如果($user==Auth::id()){
返回$next($request);
}
返回重定向(“/”);//重定向任何软件。
}
}
路线

Route::get('/hapus/{id}','PostController@destroy')->中间件('cekstatus');
Kernel.php

受保护的$middlewareGroups=[
“网络”=>[
\App\Http\Middleware\EncryptCookies::class,
\Illumb\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illumb\Session\Middleware\StartSession::class,
//\Illumb\Session\Middleware\AuthenticateSession::class,
\照亮\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illumb\Routing\Middleware\SubstituteBindings::class,
'cekstatus'=>\App\Http\Middleware\cekstatus::class,
],
“api”=>[
'节气门:60,1',
“绑定”,
],
];
输出:

错误\u太多\u重定向


您应该在这里使用策略,中间件不用于授权目的。更多关于这方面的信息,请参阅文档

文档也使用您的示例,您可以创建一个删除函数,而不是更新,然后在控制器中使用它,您可以添加以下内容:

if (auth()->user()->can('delete', $post)) {
    // delete it code here.
}

谢谢,但我仍然收到错误“在null上调用成员函数can()”,这意味着您没有经过身份验证的用户登录