Laravel 4 - 检查帖子是否属于用户

时间:2014-05-23 06:02:11

标签: laravel laravel-4

我想知道你是否可以给我一些以下的建议/代码。

我有一个使用标准Laravel用户身份验证的身份验证系统。

登录后,用户可以添加/编辑博客帖子。

这很完美,编辑的网址如下

/blog/edit/3

其中3是博客文章的ID。

我看到的问题是我登录并操纵URL我可以编辑任何博文,即使它不属于我。

我有什么方法可以对此进行排序,以便只有添加博客帖子的人才能编辑博客帖子?

干杯,

2 个答案:

答案 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");
  }

}