阻止经过身份验证的用户在Laravel 5上查看其他用户个人资料

时间:2015-12-06 08:09:09

标签: php laravel-5.1

我想使用Laravel 5 user/1来阻止登录用户查看其他用户个人资料。我正在使用这样的路线AuthServiceProvider。如何比较登录的用户ID是否与URL中的ID匹配。如果没有则无法继续。

以下是我在$gate->define('view-profile', function($user, $id) { return Auth::user()->id === $id; }); 中尝试的以下代码:

if (Gate::denies('view-post', [Auth::user()->id, (int) $id])) {
        return abort(403);
    } else {
        return 'success';
}

但是,上面的代码不起作用,因为我无法从URL传递正确的ID。有人可以帮忙吗?

这是我在控制器中的代码:

{{1}}

2 个答案:

答案 0 :(得分:1)

只是为了让大家都知道我已经使用Microsoft.Owin.Cors方法自行解决了这个问题。这是相关代码,我希望任何人都可以找到帮助:

Gate::forUser()

AuthServiceProvider

在您的$gate->define('view-post', function($user, $id) { return $user->id === (int) $id; });

Controller

答案 1 :(得分:0)

如果您将用户控制器与用户路由,则user / 1将路由用户控制器show功能,而在show功能中,您可以使用id检查您的身份验证用户:

Function show ($id)
{
if (  Auth::user()->id == $id) {
//your code here
}

}