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