Laravel 8 表單請(qǐng)求授權(quán)驗(yàn)證

2021-07-17 16:07 更新

表單請(qǐng)求類內(nèi)也包含了 authorize 方法。在這個(gè)方法中,你可以檢查經(jīng)過身份驗(yàn)證的用戶確定其是否具有更新給定資源的權(quán)限。比方說,你可以判斷用戶是否擁有更新文章評(píng)論的權(quán)限:

/**
 * 判斷用戶是否有請(qǐng)求權(quán)限
 *
 * @return bool
 */
public function authorize()
{
    $comment = Comment::find($this->route('comment'));

    return $comment && $this->user()->can('update', $comment);
}

由于所有的表單請(qǐng)求都是繼承了 Laravel 中的請(qǐng)求基類,所以我們可以使用 user 方法去獲取當(dāng)前認(rèn)證登錄的用戶。同時(shí)請(qǐng)注意上述例子中對(duì) route 方法的調(diào)用。這個(gè)方法允許你在被調(diào)用的路由上獲取其定義的 URI 參數(shù),譬如下面例子中的 {comment} 參數(shù):

Route::post('comment/{comment}'); 

如果 authorize 方法返回 false,則會(huì)自動(dòng)返回一個(gè)包含 403 狀態(tài)碼的 HTTP 響應(yīng),也不會(huì)運(yùn)行控制器的方法。

如果你打算在應(yīng)用程序的其它部分處理授權(quán)邏輯,只需從 authorize 方法返回 true

/**
 * 判斷用戶是否有請(qǐng)求權(quán)限
 *
 * @return bool
 */
public function authorize()
{
    return true;
}

Tip:你可以向 authorize 方法傳入所需的任何依賴項(xiàng)。他們會(huì)自動(dòng)被 Laravel 提供的 服務(wù)容器 自動(dòng)解析。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)