2014-04-01 31 views
0

我是Laravel的新手,想知道會發生什麼;是防止用戶編輯彼此數據的最佳做法。防止其他用戶查看/編輯對方數據的最佳做法

我知道我可以使用過濾器和身份驗證來處理用戶頁面,例如。

Route::filter('auth', function($route) 
    { 
    $id = $route->getParameter('id'); 
    if(Auth::check() && Auth::user()->id != $id) { 

     return Redirect::route('forbidden'); 
    } 
}); 

但是我想知道關於關係的網頁(即/ user_profile/14,user_settings/22等)。我是否爲這些[一組]路線中的每一個定義了過濾器,並根據關係檢查ID?例如

Route::filter('auth.user_settings', function($route) 
{ 
    $id = $route->getParameter('id'); 
    if(Auth::check() && Auth::user()->user_settings->id != $id) { 

     return Redirect::route('forbidden'); 
    }); 

Route::filter('auth.user_profile', function($route) 
{ 
    $id = $route->getParameter('id'); 
    if(Auth::check() && Auth::user()->profile->id != $id) { 

     return Redirect::route('forbidden'); 
    }); 

...etc 

還是有更好的方法來做到這一點?

回答

1

我猜你做你的方式的應用程序,你的路線可能是這樣的:

Route::get('user_profile/{id}', function() 

如果這就是你怎麼一直定義爲用戶的路線,你可能想將其更改爲只是:

Route::get('user_profile', function() 

然後在請求,控制器將隨後加載適當的簡檔/使用類似資料:: findOrFail從當前認證的用戶設置(AUTH ::用戶() - > id)的這在這種情況下,你沒有我們擔心用戶檢查其他個人資料,並且您需要的只是路由的'auth'過濾器組。

+0

我覺得非常愚蠢。在我的防守中,這是漫長的一天,不知道我在想什麼。羅。謝謝 –

相關問題