2015-12-06 31 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!')); 
相關問題