W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
到目前為止,我們只研究了返回簡單布爾值的策略方法。然而,有時您可能希望返回更詳細(xì)的響應(yīng),包括錯誤消息。為此,您可以從您的策略方法返回一個 \Auth\Access\Response
:
use Illuminate\Auth\Access\Response;
/**
* 確定用戶是否可以更新給定的帖子
*
* @param \App\Models\User $user
* @param \App\Models\Post $post
* @return \Illuminate\Auth\Access\Response
*/
public function update(User $user, Post $post)
{
return $user->id === $post->user_id
? Response::allow()
: Response::deny('You do not own this post.');
}
當(dāng)從策略返回授權(quán)響應(yīng)時,Gate::allows
方法仍然返回一個簡單的布爾值;但是,你可以使用 Gate::inspect
方法來獲得 Gate 返回的完整授權(quán)響應(yīng):
$response = Gate::inspect('update', $post);
if ($response->allowed()) {
// The action is authorized...
} else {
echo $response->message();
}
當(dāng)然,當(dāng)使用 Gate::authorize
方法在未授權(quán)操作時拋出 AuthorizationException
,授權(quán)響應(yīng)提供的錯誤消息將傳播到 HTTP 響應(yīng):
Gate::authorize('update', $post);
// 該動作授權(quán)通過..
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: