2016-03-10 33 views
0

我對Laravel中使用Policy類的最佳方式有些困惑。Laravel政策 - 更新之前/之後?

假設我有UserPost,在更新檢查User擁有該帖子的帖子時,我有一個策略方法。

從數據庫中加載它之後,我應該立即將Post對象轉換爲authorize方法嗎?或者一旦我更新了可填寫的值?

我的問題是如果user_idPost上發生變化,授權方法將允許用戶更改帖子,即使他們不擁有它,或者它將允許他們將用戶更改爲其他人,這意味着他們失去了訪問權限。

這是否意味着我需要在更新其值之前和之後調用$this->authorize('update', $post)

$post = Post::findOrFail($id); 

$this->authorize('update', $post); // Should I call it here 

$post->fill($request->input()); 

$this->authorize('update', $post); // Or here? Or, both places? 

或者,我是否應該使用請求驗證來確保用戶無法輸入他們無法訪問的實體的ID?

+0

你能解釋一下如何'user_id'可以在改變你的設計?我的意思是可以通過表單提交更改嗎? –

+0

我只是使用'User'和'Post'作爲示例,但是,想象一下,將會有一個'