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

Perisian tengah rangka kerja Yii: melaksanakan pengesahan dan kebenaran pengguna

王林
王林asal
2023-07-30 18:27:20828semak imbas

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);
    }
}

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';
    }
}

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);
    }
}

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';
    }
}

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!

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