我想知道你是否可以给我一些以下的建议/代码。
我有一个使用标准Laravel用户身份验证的身份验证系统。
登录后,用户可以添加/编辑博客帖子。
这很完美,编辑的网址如下
/blog/edit/3
其中3是博客文章的ID。
我看到的问题是我登录并操纵URL我可以编辑任何博文,即使它不属于我。
我有什么方法可以对此进行排序,以便只有添加博客帖子的人才能编辑博客帖子?
干杯,
答案 0 :(得分:5)
有很多方法可以做到这一点。我目前的偏好是使用自定义过滤器:
Route::model('blog', 'Blog');
Route::get('/blog/edit/{blog}', ['as' => 'blog.edit', 'before' => 'auth.blog', 'uses' => 'BlogController@edit']);
然后在你的过滤器文件中
Route::filter('auth.blog', function($route, $request)
{
if ($route->parameter('blog')->user_id !== Auth::user()->id)
{
return Redirect::route('home')->with('error', 'sorry - you do not have access to that blog');
});
答案 1 :(得分:2)
我猜您的控制器中有编辑和更新方法。
public function edit($id)
{
$blog = Blog::find($id);
if (Auth::user()->id !== $blog->user_id)
{
return Redirect::route('home')->withError("Un-Authorise access");
}
}
更新功能也是如此。
public function update($id)
{
$blog = Blog::find($id);
if (Auth::user()->id !== $blog->user_id)
{
return Redirect::route('home')->withError("Un-Authorise access");
}
}