2015-12-06 25 views
0

我想使用Laravel 5 AuthServiceProvider来阻止登录的用户查看其他用户配置文件。我正在使用像这样的路线user/1。如何比较登录的用户ID是否与URL中的ID匹配。如果没有,则不能继续。阻止经过身份验证的用户查看Laravel 5上的其他用户配置文件

这里是下面的代码,我想在我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'; 
} 

回答

0

如果有用户,然后用户/ 1将路由用户控制显示功能,并且在显示功能,您可以检查您的身份验证你的路线用户控制器用户名:

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

} 
+0

这是可行的。但是,我想使用'AuthServiceProvider',因为它旨在执行这种操作。 –

1

只是让大家知道我已经使用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!')); 
相关问题