Rumah > rangka kerja php > Laravel > teks badan

Perkembangan terkini fungsi kebenaran Laravel: Cara menangani pengurusan kebenaran dalam persekitaran berbilang penyewa

WBOY
Lepaskan: 2023-11-04 12:52:51
asal
985 orang telah melayarinya

Perkembangan terkini fungsi kebenaran Laravel: Cara menangani pengurusan kebenaran dalam persekitaran berbilang penyewa

Perkembangan terkini fungsi kebenaran Laravel: Cara menangani pengurusan kebenaran dalam persekitaran berbilang penyewa, contoh kod khusus diperlukan

Dalam beberapa tahun kebelakangan ini, dengan peningkatan pengkomputeran awan dan Perisian sebagai Perkhidmatan (SaaS), pengurusan kebenaran dalam persekitaran berbilang penyewa telah menjadi cabaran penting dalam pembangunan perisian. Dalam persekitaran ini, berbilang pengguna atau organisasi berkongsi aplikasi yang sama, dan setiap pengguna atau organisasi hanya boleh mengakses data dan fungsinya sendiri. Dalam senario sedemikian, bagaimana untuk memastikan bahawa pengguna hanya boleh mengakses sumber yang mereka mempunyai kebenaran telah menjadi masalah yang mesti diselesaikan.

Sebagai rangka kerja pembangunan PHP yang berkuasa, Laravel menyediakan fungsi pengurusan kebenaran yang kaya. Versi Laravel terkini menambah baik lagi fungsi pengurusan kebenaran dalam persekitaran berbilang penyewa, menjadikannya lebih mudah untuk digunakan dan dikonfigurasikan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan Laravel untuk menangani pengurusan kebenaran dalam persekitaran berbilang penyewa dan menyediakan contoh kod khusus.

Dalam Laravel, kebenaran biasanya dikendalikan melalui dua konsep peranan dan kebenaran. Peranan menentukan identiti atau peranan pengguna, manakala kebenaran menentukan tindakan khusus yang boleh dilakukan oleh pengguna. Dengan memautkan peranan dan kebenaran, kami boleh mengurus kebenaran pengguna dengan mudah.

Pertama sekali, kita perlu mencipta jadual yang sepadan dalam pangkalan data untuk menyimpan maklumat peranan dan kebenaran. Dalam Laravel, jadual ini boleh dibuat dengan menggunakan migrasi. Berikut ialah contoh migrasi yang mencipta jadual peranan dan kebenaran:

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateRolesAndPermissionsTable extends Migration
{
    public function up()
    {
        Schema::create('roles', function (Blueprint $table) {
            $table->id();
            $table->string('name')->unique();
            $table->timestamps();
        });

        Schema::create('permissions', function (Blueprint $table) {
            $table->id();
            $table->string('name')->unique();
            $table->timestamps();
        });

        Schema::create('role_permission', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('role_id');
            $table->unsignedBigInteger('permission_id');
            $table->timestamps();

            $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
            $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade');
        });
    }

    public function down()
    {
        Schema::dropIfExists('role_permission');
        Schema::dropIfExists('roles');
        Schema::dropIfExists('permissions');
    }
}
Salin selepas log masuk

Dalam penghijrahan ini, kami mencipta jadual peranan, jadual kebenaran dan < kod >role_permission jadual untuk menyimpan maklumat peranan dan kebenaran. Jadual role_permission ialah jadual perkaitan peranan dan kebenaran. roles表、permissions表和role_permission表来存储角色和权限的信息。role_permission表是角色和权限的关联表。

接下来,我们可以使用Laravel的认证和授权系统来管理用户的角色和权限。首先,在User模型中定义用户与角色的关联关系:

use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateDatabaseEloquentRelationsBelongsToMany;

class User extends Authenticatable
{
    public function roles(): BelongsToMany
    {
        return $this->belongsToMany(Role::class);
    }
}
Salin selepas log masuk

Role模型中定义角色与权限的关联关系:

use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentRelationsBelongsToMany;

class Role extends Model
{
    public function permissions(): BelongsToMany
    {
        return $this->belongsToMany(Permission::class);
    }
}
Salin selepas log masuk

然后,在需要进行权限验证的地方,我们可以使用Laravel的授权系统来检查用户是否有执行某个操作的权限。以下是一个检查用户是否有创建新用户的权限的示例:

use IlluminateSupportFacadesGate;

if (Gate::allows('create-user')) {
    // 用户有创建新用户的权限
} else {
    // 用户没有权限
}
Salin selepas log masuk

在上面的示例中,我们使用Gate::allows()方法来判断用户是否有执行create-user操作的权限。如果用户有权限,我们就可以执行相应的操作;否则,我们可以抛出一个异常或者显示一个错误信息。

最后,我们需要为不同的租户分配角色和权限。在多租户环境下,每个租户可能有自己独立的角色和权限。我们可以使用Laravel提供的事件和订阅者来实现这一功能。以下是一个为新建租户分配角色和权限的示例:

use AppEventsTenantCreated;
use AppListenersAssignDefaultRolesAndPermissionsToTenant;

Event::listen(
    TenantCreated::class,
    AssignDefaultRolesAndPermissionsToTenant::class
);

class AssignDefaultRolesAndPermissionsToTenant
{
    public function handle(TenantCreated $event)
    {
        $tenant = $event->tenant;

        // 为租户分配默认角色和权限
        $defaultRole = Role::where('name', 'tenant')->first();
        $defaultPermission = Permission::where('name', 'create-resource')->first();
        $tenant->roles()->attach($defaultRole);
        $defaultRole->permissions()->attach($defaultPermission);
    }
}
Salin selepas log masuk

在上面的示例中,我们定义了一个TenantCreated事件和一个AssignDefaultRolesAndPermissionsToTenant订阅者。当新建一个租户时,系统会触发TenantCreated事件,然后AssignDefaultRolesAndPermissionsToTenant

Seterusnya, kami boleh menggunakan sistem pengesahan dan kebenaran Laravel untuk mengurus peranan dan kebenaran pengguna. Mula-mula, tentukan perkaitan antara pengguna dan peranan dalam model User:

rrreee

Tentukan perkaitan antara peranan dan kebenaran dalam model Role: # 🎜🎜#rrreee

Kemudian, di mana pengesahan kebenaran diperlukan, kami boleh menggunakan sistem kebenaran Laravel untuk menyemak sama ada pengguna mempunyai kebenaran untuk melakukan operasi tertentu. Berikut ialah contoh menyemak sama ada pengguna mempunyai kebenaran untuk mencipta pengguna baharu:

rrreee#🎜🎜#Dalam contoh di atas, kami menggunakan kaedah Gate::allows() untuk menentukan sama ada pengguna Mempunyai kebenaran untuk melaksanakan operasi create-user. Jika pengguna mempunyai kebenaran, kami boleh melakukan operasi yang sepadan jika tidak, kami boleh membuang pengecualian atau memaparkan mesej ralat. #🎜🎜##🎜🎜#Akhir sekali, kami perlu menetapkan peranan dan kebenaran kepada penyewa yang berbeza. Dalam persekitaran berbilang penyewa, setiap penyewa mungkin mempunyai peranan dan kebenaran bebasnya sendiri. Kami boleh menggunakan acara dan pelanggan yang disediakan oleh Laravel untuk mencapai fungsi ini. Berikut ialah contoh memberikan peranan dan kebenaran kepada penyewa yang baru dibuat: #🎜🎜#rrreee#🎜🎜#Dalam contoh di atas, kami mentakrifkan acara TenantCreated dan AssignDefaultRolesAndPermissionsToTenant kod > Pelanggan. Apabila penyewa baharu dibuat, sistem akan mencetuskan acara <code>TenantCreated dan kemudian pelanggan AssignDefaultRolesAndPermissionsToTenant akan menetapkan peranan dan kebenaran lalai kepada penyewa yang baru dibuat. #🎜🎜##🎜🎜#Melalui langkah di atas, kami boleh melaksanakan pengurusan kebenaran dalam persekitaran berbilang penyewa dalam Laravel. Ciri keizinan Laravel menyediakan pilihan konfigurasi yang fleksibel dan antara muka yang mudah digunakan, menjadikannya lebih mudah untuk mengendalikan kebenaran dalam persekitaran berbilang penyewa. Pada masa yang sama, kami boleh melaraskan dan mengembangkan fungsi kebenaran secara fleksibel mengikut keperluan sebenar untuk menyesuaikan diri dengan senario perniagaan yang berbeza. #🎜🎜##🎜🎜#Ringkasnya, Laravel telah menambah baik lagi fungsi pengurusan kebenaran dalam persekitaran berbilang penyewa dalam versi terkini. Dengan mewujudkan jadual peranan dan kebenaran, mentakrifkan perhubungan model, menggunakan sistem pengesahan dan kebenaran, serta menggunakan acara dan pelanggan, kami boleh melaksanakan pengurusan kebenaran dengan mudah dalam persekitaran berbilang penyewa. Saya harap contoh kod di atas dapat membantu anda lebih memahami dan menggunakan fungsi kebenaran Laravel, menjadikan aplikasi anda lebih selamat dan boleh dipercayai dalam persekitaran berbilang penyewa. #🎜🎜#

Atas ialah kandungan terperinci Perkembangan terkini fungsi kebenaran Laravel: Cara menangani pengurusan kebenaran dalam persekitaran berbilang penyewa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!