2017-06-21 82 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