阻止经过身份验证的用户在Laravel 5上查看其他用户的配置文件


Prevent authenticated user to view other users profile on Laravel 5

我想使用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
}
}