Rumah  >  Artikel  >  rangka kerja php  >  Petua praktikal untuk fungsi kebenaran Laravel: Cara melaksanakan kawalan versi dan rollback kebenaran

Petua praktikal untuk fungsi kebenaran Laravel: Cara melaksanakan kawalan versi dan rollback kebenaran

王林
王林asal
2023-11-02 10:37:511062semak imbas

Petua praktikal untuk fungsi kebenaran Laravel: Cara melaksanakan kawalan versi dan rollback kebenaran

Petua praktikal tentang fungsi kebenaran Laravel: Cara melaksanakan kawalan versi dan rollback kebenaran

Dalam aplikasi web moden, pengurusan kebenaran ialah ciri penting. Rangka kerja Laravel memberikan kami alat pengurusan kebenaran yang mudah dan berkuasa yang boleh membantu kami membuat dan mengurus peranan dan kebenaran pengguna dengan mudah.

Walau bagaimanapun, semasa proses pembangunan, kami mungkin menghadapi beberapa situasi di mana kebenaran perlu diubah versi dan ditarik balik. Sebagai contoh, kami ingin menambah atau mengubah suai peranan atau kebenaran dalam versi aplikasi tertentu, tetapi menyedari dalam versi yang lebih baru bahawa perubahan itu salah dan perlu kembali ke keadaan sebelumnya. Jadi, bagaimana untuk melaksanakan kawalan versi dan rollback kebenaran dalam Laravel? Seterusnya, saya akan memperkenalkannya kepada anda secara terperinci.

Pertama, kita perlu menggunakan alat migrasi Laravel untuk membuat jadual data untuk menyimpan maklumat versi kebenaran. Jalankan arahan berikut dalam baris arahan untuk menjana fail migrasi:

php artisan make:migration create_permission_versions_table --create=permission_versions

Kemudian, buka fail migrasi yang baru dibuat dan edit kaedah atas untuk menambah medan maklumat versi yang perlu disimpan:

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreatePermissionVersionsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('permission_versions', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('version')->unique();
            $table->text('data');
            $table->timestamps();
        });
    }

    // ...
}

Seterusnya, laksanakan migrasi arahan untuk mencipta kebenaran Jadual versi:

php artisan migrate

Selepas itu, kita perlu mencipta kelas model untuk mengurus data versi kebenaran. Jalankan arahan berikut dalam baris arahan untuk menjana fail model:

php artisan make:model PermissionVersion

Buka kelas model yang baru dibuat dan tambah kod berikut untuk menentukan perkaitan model dengan jadual data:

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class PermissionVersion extends Model
{
    use HasFactory;

    protected $fillable = [
        'version',
        'data',
    ];
}

Sekarang, kami bersedia untuk memulakan melaksanakan kawalan versi kebenaran dan rollback. Mula-mula, buka fail migrasi tempat anda ingin menambah atau mengubah suai kebenaran dan tulis kod untuk menambah atau mengubah suai kebenaran dalam kaedah naik. Kemudian, pada penghujung kod, gunakan kod berikut untuk merekodkan operasi pemindahan ke dalam jadual versi kebenaran:

use AppModelsPermissionVersion;

// ...

class AddNewPermission extends Migration
{
    // ...

    public function up()
    {
        // 添加或修改权限的代码

        // 记录迁移操作到权限版本表中
        PermissionVersion::create([
            'version' => time(),
            'data' => json_encode(['add_new_permission' => true]),
        ]);
    }

    // ...
}

Dalam kod, kami mencipta rekod versi kebenaran baharu dan menggunakan masa semasa sebagai nombor versi. Kami juga menggunakan fungsi json_encode untuk memasukkan data tambahan sebagai data versi. Anda boleh menyimpan maklumat yang berkaitan dalam medan ini mengikut keperluan sebenar.

Sekarang, apabila kita perlu kembali ke versi kebenaran sebelumnya, kita hanya mencari versi kebenaran lama yang terbaharu dan menggunakan datanya pada sistem kebenaran menggunakan kod berikut:

use AppModelsPermissionVersion;

// ...

class RollbackPermissions extends Migration
{
    // ...

    public function up()
    {
        // 找到最近的较早权限版本
        $previousVersion = PermissionVersion::orderBy('version', 'desc')->first();

        // 将之前保存的权限数据应用到系统中
        $permissions = json_decode($previousVersion->data, true);
        // 应用权限数据的代码

        // 更新权限版本表,记录回滚操作
        PermissionVersion::create([
            'version' => time(),
            'data' => json_encode(['rollback_permissions' => true]),
        ]);
    }

    // ...
}

Dalam kod ini, kami Menggunakan kaedah orderBy untuk mengisih versi kebenaran dalam susunan menurun dan mendapatkan rekod versi pertama. Kemudian, nyahkod data kebenaran yang disimpan sebelum ini ke dalam tatasusunan dan gunakannya pada sistem. Akhir sekali, kami mencipta rekod versi kebenaran baharu yang merekodkan operasi rollback.

Dengan cara ini, kami telah berjaya melaksanakan kawalan versi dan fungsi rollback kebenaran Laravel. Keizinan boleh ditambah atau diubah suai mengikut keperluan dan anda boleh dengan mudah kembali ke versi kebenaran sebelumnya.

Di atas adalah pengenalan terperinci kepada teknik untuk melaksanakan kawalan versi dan rollback kebenaran dalam Laravel. Saya harap ia akan membantu anda. Sudah tentu, pelaksanaan kod khusus mungkin berbeza-beza bergantung pada keperluan sebenar, dan contoh di atas adalah untuk rujukan sahaja. Melalui penggunaan alatan migrasi dan kelas pengurusan model yang betul, kami boleh mengurus dan mengawal kebenaran aplikasi dengan lebih baik.

Atas ialah kandungan terperinci Petua praktikal untuk fungsi kebenaran Laravel: Cara melaksanakan kawalan versi dan rollback kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn