Rumah > rangka kerja php > Laravel > teks badan

Cara melaksanakan strategi pengesahan kebenaran dan kebenaran dalam Laravel

PHPz
Lepaskan: 2023-11-04 13:09:37
asal
1183 orang telah melayarinya

Cara melaksanakan strategi pengesahan kebenaran dan kebenaran dalam Laravel

Cara melaksanakan strategi pengesahan kebenaran dan kebenaran dalam Laravel

Apabila membangunkan aplikasi web, adalah sangat penting untuk memastikan pengguna hanya boleh mengakses fungsi yang mereka mempunyai kebenaran. Rangka kerja Laravel menyediakan strategi pengesahan kebenaran dan kebenaran yang mudah dan fleksibel, membolehkan pembangun mencapai matlamat ini dengan mudah. Artikel ini akan memperkenalkan cara melaksanakan strategi pengesahan kebenaran dan kebenaran dalam Laravel, termasuk contoh kod khusus.

  1. Tentukan strategi kawalan kebenaran

Dalam Laravel, kawalan kebenaran boleh dicapai dengan menentukan kelas dasar. Pertama, kita perlu membuat kelas strategi. Anda boleh menggunakan arahan Artisan untuk menjana templat:

php artisan make:policy ArticlePolicy --model=Article
Salin selepas log masuk

Arahan di atas akan menjana kelas dasar bernama ArticlePolicy dalam direktori app/Policies. Dalam kelas ini, kita boleh menentukan berbilang kaedah untuk menyemak kebenaran yang berbeza. app/Policies目录下生成一个名为ArticlePolicy的策略类。在该类中,我们可以定义多个方法来检查不同的权限。

<?php

namespace AppPolicies;

use AppUser;
use AppArticle;

class ArticlePolicy
{
    public function view(User $user, Article $article)
    {
        return true; // 允许所有用户查看文章
    }

    public function create(User $user)
    {
        return $user->isAdmin(); // 只允许管理员创建文章
    }

    public function update(User $user, Article $article)
    {
        return $user->id === $article->user_id; // 只允许文章的作者更新文章
    }

    public function delete(User $user, Article $article)
    {
        return $user->isAdmin(); // 只允许管理员删除文章
    }
}
Salin selepas log masuk

在上面的示例中,view方法允许所有用户查看文章,create方法只允许管理员创建文章,update方法只允许文章的作者更新文章,delete方法只允许管理员删除文章。可以根据具体需求来定义更多的方法和相应的权限规则。

  1. 注册策略类

在Laravel中,我们需要将策略类注册到服务提供者中,以便框架能够正确地使用。打开app/Providers/AuthServiceProvider.php文件,在boot方法中添加注册代码:

<?php

namespace AppProviders;

use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;
use IlluminateSupportFacadesGate;
use AppPoliciesArticlePolicy;
use AppArticle;

class AuthServiceProvider extends ServiceProvider
{
    protected $policies = [
        Article::class => ArticlePolicy::class,
    ];

    public function boot()
    {
        $this->registerPolicies();

        // 其他授权策略注册代码...
    }
}
Salin selepas log masuk

在上面的示例中,我们将Article模型和ArticlePolicy策略类进行了关联注册,以便对文章进行权限控制。

  1. 使用授权策略

在控制器或路由中,可以使用authorize方法来进行权限验证。该方法接受两个参数:授权的动作和要授权的资源。下面是一个控制器示例:

<?php

namespace AppHttpControllers;

use AppArticle;
use IlluminateHttpRequest;

class ArticleController extends Controller
{
    public function update(Request $request, Article $article)
    {
        $this->authorize('update', $article);

        // 允许更新文章的逻辑...
    }

    public function delete(Article $article)
    {
        $this->authorize('delete', $article);

        // 允许删除文章的逻辑...
    }
}
Salin selepas log masuk

在上面的示例中,update方法和delete方法都通过$this->authorize方法进行了权限验证,只有当用户拥有相应权限时才会继续执行后续操作。否则,将抛出IlluminateAuthAccessAuthorizationExceptionrrreee

Dalam contoh di atas, kaedah view membenarkan semua pengguna melihat artikel, kaedah create hanya membenarkan pentadbir mencipta artikel dan kemas kini kaedah code> hanya membenarkan pentadbir mencipta artikel Pengarang artikel dibenarkan mengemas kini artikel dan kaedah <code>delete hanya membenarkan pentadbir memadamkan artikel. Lebih banyak kaedah dan peraturan kebenaran yang sepadan boleh ditakrifkan mengikut keperluan khusus.

    Daftar kelas strategi

    Di Laravel, kita perlu mendaftar kelas strategi dengan pembekal perkhidmatan supaya rangka kerja boleh menggunakannya dengan betul. Buka fail app/Providers/AuthServiceProvider.php dan tambahkan kod pendaftaran dalam kaedah boot:

    rrreee🎜Dalam contoh di atas, kami akan Article kod >Model ini dikaitkan dengan kelas dasar <code>ArticlePolicy dan didaftarkan untuk mengawal kebenaran pada artikel. 🎜
      🎜Gunakan strategi kebenaran🎜🎜🎜Dalam pengawal atau laluan, anda boleh menggunakan kaedah benar untuk pengesahan kebenaran. Kaedah ini menerima dua parameter: tindakan yang dibenarkan dan sumber yang dibenarkan. Berikut ialah contoh pengawal: 🎜rrreee🎜Dalam contoh di atas, kedua-dua kaedah kemas kini dan kaedah delete lulus $this->authorize kod> Kaedah melaksanakan pengesahan kebenaran dan akan terus melaksanakan operasi seterusnya hanya apabila pengguna mempunyai kebenaran yang sepadan. Jika tidak, pengecualian IlluminateAuthAccessAuthorizationException akan dilemparkan. 🎜🎜Melalui langkah di atas, kami boleh melaksanakan strategi pengesahan kebenaran dan kebenaran dalam Laravel. Tentukan peraturan kebenaran yang berbeza dalam kelas dasar, dan kemudian gunakan kaedah kebenaran dalam pengawal atau laluan untuk mengesahkan kebenaran. Ini meningkatkan keselamatan aplikasi anda dengan memastikan pengguna hanya boleh mengakses ciri yang mereka mempunyai kebenaran. 🎜🎜Ringkasan🎜🎜Artikel ini memperkenalkan cara melaksanakan strategi pengesahan kebenaran dan kebenaran dalam Laravel, termasuk mentakrifkan strategi kawalan kebenaran, mendaftarkan kelas strategi dan contoh khusus menggunakan strategi kebenaran. Melalui penggunaan munasabah strategi pengesahan kebenaran dan kebenaran, kami boleh memastikan bahawa pengguna hanya boleh mengakses fungsi yang mereka mempunyai kebenaran, meningkatkan keselamatan aplikasi. Harap artikel ini membantu anda! 🎜

Atas ialah kandungan terperinci Cara melaksanakan strategi pengesahan kebenaran dan kebenaran dalam Laravel. 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!