Laravel同样授权更新和编辑方法

时间:2015-05-28 14:04:54

标签: php laravel laravel-5

我想尽可能保持DRY的授权。 目前我的更新方法是使用Laravel 5 FormRequest。

示例:

/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    $commentId = $this->route('comment');

    return Comment::where('id', $commentId)
                  ->where('user_id', Auth::id())->exists();
}

问题是这只是为了更新方法而被触发:

 /**
 * Update the specified resource in storage.
 *
 * @param  int  $id
 * @return Response
 */
public function update(UpdateRequest $request, $id)
{
         // ...
}

如何为编辑方法使用相同的授权逻辑?

否则每个人都可以输入:

/resources/ID/edit
           ^
           not allowed

只有所有者才能看到该页面,而不是每个人

注意我无法将相同的UpdateForm添加到编辑方法中,因为否则也可能会触发验证

 /**
 * Show edit form for the specified resource in storage.
 *
 * @param  int  $id
 * @return Response
 */
public function edit(UpdateRequest $request, $id)
{
         // ...
}

1 个答案:

答案 0 :(得分:0)

你在laravel 5中有一些叫做中间件的东西。 您可以在路由中使用它,以便在调用操作之前执行它。 我认为,根据您的需要,您必须创建自己的中间件。

http://laravel.com/docs/master/middleware

创建一个之后,你必须告诉laravel使用中间件,然后将其添加到你的路线中

route::get('test', ['middleware' => 'yourmiddleware', 'uses' => 'yourController@index']);