2017-06-21 80 views
0

我正在構建一個應用程序,登錄的用戶可以編輯自己的配置文件,當然無法編輯其他用戶的配置文件。如何保護編輯用戶配置文件路線?

我有這樣的路線如下:

http://2mark.dev/profile/derp22/edit 

與這條路線的問題是,該航線是由另一個用戶訪問,並最終將允許其他用戶編輯「derp22」配置文件數據。我的問題是如何保護這條路線,使其他用戶無法訪問它?

感謝您的幫助!

+0

您可以創建[中間件](https://laravel.com/docs/5.4/middleware)或[策略](https:// laravel的.com /文檔/ 5.4 /授權)。您的目標將是一個簡單的「if」檢查,以查看登錄用戶是否確實擁有正在編輯的配置文件。看看文檔:) – Alex

+0

從我的經驗來看,'/ profile/{user_id}'不是一個路由;而是'/ profile/edit',並且與該路由相關的控制器將返回登錄用戶的詳細信息。這樣,就不可能輸入其他用戶的ID並編輯他們的信息。使用其他路由,例如'/ user/{user_id}/edit' –

+0

不要在URL中傳遞明智的信息,只需從當前會話中獲取。 –

回答

2

您可以在您的配置文件控制器中的方法中檢查此項。

這裏是方法:

1. Get the current user. 
2. Get the user you want to edit. 
3. Check against those Id's. 
4. Throw/return error message or proceed in method. 

實施例:

$currentUser = \Auth::user(); 
$user  = User::findOrFail($id); 

if ($user->id != $currentUser->id) { 
    abort(403); 
} 

// Then have the save method. 

https://github.com/jeremykenedy/laravel-auth/blob/master/app/Http/Controllers/ProfilesController.php