Laravel 8 策略響應(yīng)

2021-07-17 17:20 更新

到目前為止,我們只研究了返回簡單布爾值的策略方法。然而,有時您可能希望返回更詳細(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)通過..
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號