我正在構建一個應用程序,登錄的用戶可以編輯自己的配置文件,當然無法編輯其他用戶的配置文件。如何保護編輯用戶配置文件路線?
我有這樣的路線如下:
http://2mark.dev/profile/derp22/edit
與這條路線的問題是,該航線是由另一個用戶訪問,並最終將允許其他用戶編輯「derp22」配置文件數據。我的問題是如何保護這條路線,使其他用戶無法訪問它?
感謝您的幫助!
我正在構建一個應用程序,登錄的用戶可以編輯自己的配置文件,當然無法編輯其他用戶的配置文件。如何保護編輯用戶配置文件路線?
我有這樣的路線如下:
http://2mark.dev/profile/derp22/edit
與這條路線的問題是,該航線是由另一個用戶訪問,並最終將允許其他用戶編輯「derp22」配置文件數據。我的問題是如何保護這條路線,使其他用戶無法訪問它?
感謝您的幫助!
您可以在您的配置文件控制器中的方法中檢查此項。
這裏是方法:
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
您可以創建[中間件](https://laravel.com/docs/5.4/middleware)或[策略](https:// laravel的.com /文檔/ 5.4 /授權)。您的目標將是一個簡單的「if」檢查,以查看登錄用戶是否確實擁有正在編輯的配置文件。看看文檔:) – Alex
從我的經驗來看,'/ profile/{user_id}'不是一個路由;而是'/ profile/edit',並且與該路由相關的控制器將返回登錄用戶的詳細信息。這樣,就不可能輸入其他用戶的ID並編輯他們的信息。使用其他路由,例如'/ user/{user_id}/edit' –
不要在URL中傳遞明智的信息,只需從當前會話中獲取。 –