Rumah > rangka kerja php > Laravel > teks badan

Pengesahan dan Keizinan Lanjutan dengan Laravel: Melaksanakan Kawalan Akses Kompleks

WBOY
Lepaskan: 2023-08-15 18:25:50
asal
871 orang telah melayarinya

Pengesahan dan Keizinan Lanjutan dengan Laravel: Melaksanakan Kawalan Akses Kompleks

Gunakan Laravel untuk pengesahan dan kebenaran lanjutan: laksanakan kawalan akses yang kompleks

Laravel ialah rangka kerja PHP yang sangat baik yang menyediakan fungsi pengesahan dan kebenaran yang ringkas dan mudah digunakan. Untuk kebanyakan aplikasi, pengesahan dan kebenaran mudah adalah mencukupi. Tetapi untuk beberapa senario aplikasi yang kompleks, kami memerlukan kawalan akses yang lebih maju untuk memastikan keselamatan data dan ketepatan kebenaran pengguna. Artikel ini akan memperkenalkan cara menggunakan Laravel untuk melaksanakan kawalan akses yang kompleks.

Dalam Laravel, fungsi pengesahan dan kebenaran dilaksanakan melalui fasad Auth dan perisian tengah yang berkaitan. Fasad Auth menyediakan satu siri kaedah untuk mengendalikan pengesahan, seperti log masuk, pendaftaran, kata laluan terlupa, dsb. Keizinan dilaksanakan melalui perisian tengah, yang boleh mengesahkan kebenaran yang berkaitan sebelum atau selepas permintaan dihalakan.

Pertama, kita perlu menggunakan sistem pengesahan Laravel untuk melengkapkan fungsi log masuk dan pendaftaran asas. Dalam config/auth.php kita boleh mengkonfigurasi pemacu pengesahan lalai dan model pengguna. Secara lalai, Laravel menggunakan pemacu pangkalan data dan menggunakan model Pengguna untuk mengendalikan pengesahan pengguna.

Seterusnya, kita perlu menentukan peranan dan kebenaran pengguna. Dalam Laravel, anda boleh menggunakan pakej seperti amanah atau spatie/laravel-permission untuk mengurus peranan dan kebenaran. Pakej ini membantu kami mentakrifkan peranan dan kebenaran dengan cepat serta mengaitkannya dengan pengguna.

Sebagai contoh, kita boleh mencipta model Peranan dan model Kebenaran dan mewujudkan perkaitan antara mereka. Dalam model Pengguna, kita boleh menentukan perkaitan dengan Peranan dan Kebenaran, serta beberapa kaedah mudah untuk menyemak sama ada pengguna mempunyai peranan atau kebenaran tertentu.

use IlluminateDatabaseEloquentModel;

class Role extends Model
{
    public function permissions()
    {
        return $this->belongsToMany('AppPermission');
    }
}

class Permission extends Model
{
    public function roles()
    {
        return $this->belongsToMany('AppRole');
    }
}

class User extends Authenticatable
{
    public function roles()
    {
        return $this->belongsToMany('AppRole');
    }

    public function permissions()
    {
        return $this->belongsToMany('AppPermission');
    }

    public function hasRole($roles)
    {
        if (is_string($roles)) {
            $roles = [$roles];
        }

        foreach ($roles as $role) {
            if ($this->roles->contains('name', $role)) {
                return true;
            }
        }

        return false;
    }

    public function hasPermission($permissions)
    {
        if (is_string($permissions)) {
            $permissions = [$permissions];
        }

        foreach ($permissions as $permission) {
            if ($this->permissions->contains('name', $permission)) {
                return true;
            }
        }

        return false;
    }
}
Salin selepas log masuk

Seterusnya, kita boleh mencipta perisian tengah untuk pengesahan kebenaran. Dalam perisian tengah ini, kami boleh melaksanakan kawalan akses berdasarkan peranan dan kebenaran pengguna semasa. Jika pengguna tidak mempunyai kebenaran untuk mengakses laluan, kami boleh mengubah hala mereka ke halaman lain atau mengembalikan respons ralat.

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesAuth;

class CheckPermission
{
    public function handle($request, Closure $next, $permission)
    {
        if (!Auth::check() || !Auth::user()->hasPermission($permission)) {
            // 没有权限访问
            return redirect('/unauthorized');
        }

        return $next($request);
    }
}
Salin selepas log masuk

Akhir sekali, kita perlu mendaftarkan middleware ke dalam laluan. Dalam web.php, kita boleh menggunakan kaedah middleware untuk menambah middleware untuk laluan tertentu.

Route::get('/admin', function () {
    return view('admin.home');
})->middleware('checkPermission:accessAdmin');
Salin selepas log masuk

Dalam contoh ini, kami menggunakan perisian tengah "checkPermission" untuk mengesahkan sama ada pengguna mempunyai kebenaran "accessAdmin". Apabila pengguna mengakses /admin, middleware menyemak sama ada pengguna mempunyai kebenaran, dan jika tidak, mengubah hala ke halaman yang tidak dibenarkan.

Ringkasan:

Dengan menggunakan fungsi pengesahan dan kebenaran Laravel, kami boleh melaksanakan kawalan akses yang kompleks dengan mudah. Kami boleh menggunakan peranan dan kebenaran pengguna untuk menentukan kebenaran pengguna, dan menggunakan perisian tengah untuk mengesahkan hak akses pengguna. Dengan cara ini, kami boleh memastikan keselamatan data dan ketepatan kebenaran pengguna, sambil meningkatkan kebolehselenggaraan dan kebolehskalaan aplikasi.

Saya harap artikel ini akan membantu anda memahami dan menggunakan fungsi pengesahan dan kebenaran lanjutan Laravel.

Atas ialah kandungan terperinci Pengesahan dan Keizinan Lanjutan dengan Laravel: Melaksanakan Kawalan Akses Kompleks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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!