Rumah > pembangunan bahagian belakang > tutorial php > Perisian tengah rangka kerja Yii: melaksanakan pengesahan dan kebenaran pengguna

Perisian tengah rangka kerja Yii: melaksanakan pengesahan dan kebenaran pengguna

王林
Lepaskan: 2023-07-30 18:28:02
asal
906 orang telah melayarinya

Perisian tengah rangka kerja Yii: Melaksanakan pengesahan dan kebenaran pengguna

Pengenalan:
Perisian tengah ialah bahagian yang sangat penting dalam rangka kerja pembangunan web moden. Ia boleh membantu kami memasukkan kod antara permintaan pemprosesan dan respons untuk melaksanakan pelbagai fungsi. Dalam rangka kerja Yii, middleware dipanggil penapis, dan ia boleh digunakan untuk melaksanakan pelbagai fungsi seperti pengesahan dan kebenaran pengguna. Artikel ini menerangkan cara menggunakan penapis dalam rangka kerja Yii untuk melaksanakan pengesahan dan kebenaran pengguna.

1. Pelaksanaan Pengesahan
Pengesahan adalah bahagian yang sangat penting dalam aplikasi web. Ia boleh memastikan bahawa hanya pengguna yang disahkan boleh mengakses sumber terhad. Dalam rangka kerja Yii, kita boleh menggunakan penapis untuk melaksanakan fungsi pengesahan.

Pertama, kita perlu mencipta kelas penapis untuk pengesahan. Dalam rangka kerja Yii, kita boleh mewarisi kelas yii aseActionFilter untuk mencipta penapis. Berikut ialah kod untuk penapis pengesahan sampel:

namespace appilters;

use Yii;
use yiiaseActionFilter;

class AuthFilter extends ActionFilter
{
    public function beforeAction($action)
    {
        $user = Yii::$app->user;

        if ($user->isGuest) {
            $user->loginRequired();
            return false;
        }

        return parent::beforeAction($action);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mendapatkan objek Yii::$app->pengguna untuk menentukan sama ada pengguna semasa ialah tetamu (tidak disahkan). Jika pengguna ialah tetamu, kami akan menggunakan kaedah $user->loginRequired() untuk mengubah hala ke halaman log masuk. Akhir sekali, kami memanggil kaedah beforeAction kelas induk untuk terus melaksanakan penapis dan tindakan lain.

Seterusnya, kita perlu menggunakan penapis pada pengawal. Kita boleh menambah penapis dalam kaedah tingkah laku pengawal. Berikut ialah kod untuk pengawal contoh:

namespace appcontrollers;

use yiiwebController;
use appiltersAuthFilter;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'auth' => [
                'class' => AuthFilter::class,
                'only' => ['admin'],
            ],
        ];
    }

    public function actionAdmin()
    {
        return 'Admin Area';
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan penapis AuthFilter pada kaedah pentadbir pengawal SiteController. Ini akan memastikan bahawa hanya pengguna yang disahkan mempunyai akses kepada kaedah pentadbir.

2. Pelaksanaan kebenaran pengguna
Keizinan pengguna ialah satu lagi fungsi penting dalam aplikasi web Ia boleh memastikan bahawa hanya pengguna dengan kebenaran yang sesuai boleh melakukan operasi tertentu. Dalam rangka kerja Yii, kita boleh menggunakan penapis untuk melaksanakan fungsi kebenaran pengguna.

Pertama, kita perlu membuat kelas penapis untuk kebenaran pengguna. Berikut ialah kod untuk penapis kebenaran pengguna sampel:

namespace appilters;

use Yii;
use yiiaseActionFilter;

class AccessControlFilter extends ActionFilter
{
    public function beforeAction($action)
    {
        $user = Yii::$app->user;

        if (!$user->can($action->id)) {
            throw new yiiwebForbiddenHttpException('You are not allowed to perform this action.');
        }

        return parent::beforeAction($action);
    }
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mendapatkan objek Yii::$app->pengguna untuk menentukan sama ada pengguna semasa mempunyai kebenaran untuk melaksanakan operasi semasa. Jika pengguna tidak mempunyai kebenaran, kami akan membuang ForbiddenHttpException. Akhir sekali, kami memanggil kaedah beforeAction kelas induk untuk terus melaksanakan penapis dan tindakan lain.

Seterusnya, kita boleh menggunakan penapis pada pengawal dengan cara yang sama seperti penapis pengesahan. Berikut ialah kod untuk pengawal contoh:

namespace appcontrollers;

use yiiwebController;
use appiltersAccessControlFilter;

class SiteController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControlFilter::class,
                'only' => ['admin'],
            ],
        ];
    }

    public function actionAdmin()
    {
        return 'Admin Area';
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan penapis AccessControlFilter pada kaedah pentadbir pengawal SiteController. Ini akan memastikan bahawa hanya pengguna yang mempunyai kebenaran untuk melaksanakan kaedah pentadbir boleh mengakses kaedah pentadbir.

Ringkasan:
Dalam artikel ini, kami memperkenalkan cara menggunakan penapis dalam rangka kerja Yii untuk melaksanakan fungsi pengesahan dan kebenaran pengguna. Kita boleh melaksanakan ciri penting ini dengan mudah dengan mencipta kelas penapis dan menggunakannya pada kaedah pengawal. Middleware (penapis) memainkan peranan penting dalam proses pembangunan, dan ia boleh membantu kami membina aplikasi web yang selamat dan boleh dipercayai. Saya harap artikel ini dapat membantu semua orang memahami cara perisian tengah dilaksanakan.

Atas ialah kandungan terperinci Perisian tengah rangka kerja Yii: melaksanakan pengesahan dan kebenaran pengguna. 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