我想尽可能保持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)
{
// ...
}
答案 0 :(得分:0)
你在laravel 5中有一些叫做中间件的东西。 您可以在路由中使用它,以便在调用操作之前执行它。 我认为,根据您的需要,您必须创建自己的中间件。
http://laravel.com/docs/master/middleware
创建一个之后,你必须告诉laravel使用中间件,然后将其添加到你的路线中
route::get('test', ['middleware' => 'yourmiddleware', 'uses' => 'yourController@index']);