我想使用Laravel 5 AuthServiceProvider
来阻止登录用户查看其他用户的配置文件。我使用这样的路线user/1
。如何比较登录的用户ID是否与URL中的ID匹配。如果没有,则无法继续。
以下是我在AuthServiceProvider
中尝试的代码:
$gate->define('view-profile', function($user, $id) {
return Auth::user()->id === $id;
});
但是,上面的代码不起作用,因为我无法从URL传递正确的ID。有人能帮忙吗?
这是我控制器中的代码:
if (Gate::denies('view-post', [Auth::user()->id, (int) $id])) {
return abort(403);
} else {
return 'success';
}
只是想让大家知道,我已经用Gate::forUser()
方法自己解决了这个问题。以下是相关代码,我希望任何人都能找到帮助:
在AuthServiceProvider
:中
$gate->define('view-post', function($user, $id) {
return $user->id === (int) $id;
});
在您的特定Controller
:中
$user = Auth::user();
if(Gate::forUser($user)->allows('view-post', $id)) {
return 'true';
}
return abort(403, trans('Sorry, not sorry!'));
如果你用user路由用户控制器,那么user/1将路由用户控制器显示功能,在显示功能中,你可以用id:检查你的身份验证用户
Function show ($id)
{
if ( Auth::user()->id == $id) {
//your code here
}
}