亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 策略自動檢測

Laravel 策略自動檢測

PHP
慕婉清6462132 2021-06-30 14:15:53
今天我正在創建 USER 個人資料頁面,其中控制ProfileController將視圖返回到個人資料頁面、個人資料設置等。所以我決定制定一些政策規則來編輯個人資料等。所以我發現我應該使用基于 Laravel Doc 的中間件 / Gates / Policy 我選擇 Policy 因為 profil 頁面是公開的但只有它的特定部分可以作者編輯所以我需要@can所以我的步驟:php artisan make:policy ProfilePolicy (無型號)注冊政策,AuthServiceProvider在$policies財產寫的方法像edit里面ProfilePolicy然后我開始思考如何將它定義給我的控制器嗯,文檔對我沒有幫助:/所以我嘗試了刀片@can('edit', $user)方法并且它起作用了,但是如何?,如何為一個控制器定義特定策略?(不是 Model ),如何為單個 Controller 定義多個 Policy我失去了 laravel Magic 是如何做到這一點的,也許是因為命名?ProfileController => ProfilePolicy ?
查看完整描述

1 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

在控制器中你可以寫這個


public function edit(Profile $profile) {

   $this->authorize('edit', $profile)

}

Laravel 這樣做:

  • 檢查 的類型$profile,它是一個Profile::class

  • 檢查為該類注冊的策略(您的第 2 步)

  • 查找該edit策略中的方法,如果未找到,則返回 false 表示用戶未被授權

  • 執行edit()返回真/假的函數

在blade中,@can指令做的事情完全一樣。

策略旨在綁定到模型,這是編寫處理單個模型的規則的便捷方式,但它們可以通過多種方式觸發(例如authorize()控制器中的方法和@can刀片中的指令)。


查看完整回答
反對 回復 2021-07-09
  • 1 回答
  • 0 關注
  • 147 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號