Laravel 項(xiàng)目開(kāi)發(fā)規(guī)范 授權(quán)策略

2023-02-16 17:12 更新

授權(quán)策略

授權(quán)相關(guān)邏輯,必須 使用 授權(quán)策略類 來(lái)實(shí)現(xiàn)。

使用基類

所有 Policy 授權(quán)策略類 必須 繼承 app/Policies/Policy.php 基類?;愇募缦拢?br>

<?php

namespace App\Policies;

use Illuminate\Auth\Access\HandlesAuthorization;

class Policy
{
    use HandlesAuthorization;

    public function __construct()
    {
        //
    }

    public function before($user, $ability)
    {
        if ($user->isAdmin()) {
            return true;
        }
    }
}

授權(quán)策略命名

Policy 授權(quán)策略類 必須 遵循 資源路由 方式進(jìn)行命名,photos 對(duì)應(yīng) /app/Policies/PhotoPolicy.php 。

類文件參考

Policy 授權(quán)策略類文件內(nèi)容請(qǐng)參考以下:

<?php

namespace App\Policies;

use App\Models\User;
use App\Models\Photo;

class PhotoPolicy extends Policy
{
    public function update(User $user, Photo $photo)
    {
        return $user->isAuthorOf($photo);
    }

    public function destroy(User $user, Photo $photo)
    {
        return $user->isAuthorOf($photo);
    }
}

自動(dòng)判斷授權(quán)策略

應(yīng)該 使用 自動(dòng)發(fā)現(xiàn)授權(quán)策略方法,這樣控制器和授權(quán)類的方法名就統(tǒng)一起來(lái)了。

/**
 * 更新指定的文章。
 *
 * @param  int  $id
 * @return Response
 */
public function update($id)
{
    $post = Post::findOrFail($id);

    // 會(huì)自動(dòng)調(diào)用 `PostPolicy` 類中的 `update` 方法。
    $this->authorize($post);

    // 更新文章...
}


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)